테스트 사이트 - 개발 중인 베타 버전입니다

트리거를 이용하여 날짜 자동 업데이트법

· 12년 전 · 1847 · 1
-- 트리거용 테스트 테이블을 만듭니다
DROP TABLE TriggerTest;
CREATE TABLE TriggerTest (
pk INTEGER AUTO_INCREMENT PRIMARY KEY,
col01 VARCHAR(12) NOT NULL,
regDate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 입력시 자동으로 날짜를 기입하기 위해 timestamp 타입과 기본 입력값으로 current_timestamp를 사용했습니다
modifyDate TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00'
)

-- 트리거를 만듭니다.
-- 기본 트리거 문법은 CREATE TRIGGER [트리거이름] [BEFORE|AFTER] [INSERT|UPDATE|DELETE] ON [테이블이름] FOR EACH ROW [실행문] 입니다
--
CREATE TRIGGER TRG_TriggerTest_UPDATE
BEFORE UPDATE ON TriggerTest
FOR EACH ROW
BEGIN
SET NEW.modifyDate = CURRENT_TIMESTAMP;
END;

-- 테스트용 데이타를 입력합니다.
INSERT INTO TriggerTest SET col01 = '123';
INSERT INTO TriggerTest SET col01 = '456';
SELECT * FROM TriggerTest;
-- 대략 아래와 같이 실행되었으리라 예상합니다.
pk col01 regDate modifyDate
------------------------------------------------------------------------------------------------------------------
1 123 "2008-03-20 오전 11:33:44" '0000-00-00 00:00:00'
2 456 "2008-03-20 오전 11:33:44" '0000-00-00 00:00:00'
------------------------------------------------------------------------------------------------------------------
--이제 PK가 2인 COL01 의 칼럼을 수정하겠습니다.
UPDATE TriggerTest SET col01 = '012' where pk = 2;
-- 결과를 보도록 하죠.
SELECT * FROM TriggerTest;
아래와 같이 수정한 칼럼의 수정일이 저장되었습니다.
pk col01 regDate modifyDate
------------------------------------------------------------------------------------------------------------------
1 123 "2008-03-20 오전 11:33:44" '0000-00-00 00:00:00'
2 012 "2008-03-20 오전 11:33:44" "2008-03-20 오전 11:36:34"
------------------------------------------------------------------------------------------------------------------

이 트리거를 좀더 활용하면 특정 테이블에 데이타가 들어오면 자동으로 다른 테이블에 입력, 수정, 삭제도 가능합니다.
이상 허접한 팁이었습니다.

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 1개

12년 전
감사합니다.

게시글 목록

번호 제목
5125
31169
31156
24468
5123
26932
18245
18239
5111
18236
5097
5096
26924
5086
5080
31139
26919
5078
26914
26898
18227
24462
26891
5072
5069
5066
26889
24457
5061
30628
5059
26413
18223
18222
31109
26410
26406
5056
5042
26885
31097
18214
5034
5030
31075
26879
5021
5019
18207
26854
5010
5002
4999
4986
4995
18196
30626
18195
26852
26846
4985
18186
30622
26842
18184
26839
18182
4972
4954
4951
4947
24448
26832
4937
4934
26827
18181
4924
18169
4930
4917
24438
26820
26813
4912
26804
4906
4895
4887
4882
4877
4869
30618
4866
26799
4862
26795
24430
4857
30609