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

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

· 12년 전 · 1846 · 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년 전
감사합니다.

게시글 목록

번호 제목
32071
32070
18535
5369
27088
5364
32069
32068
18521
5359
18520
32067
32066
27081
18514
5355
5354
5350
32065
18510
18503
32064
32063
18502
18499
18495
5345
27079
30718
18494
18493
5343
18491
18489
18487
18486
18484
18482
32062
26476
18481
5339
18480
18476
27137
30711
18475
18474
18470
32061
18469
32060
5335
32059
5333
32058
32057
30705
5326
18466
18462
18461
31504
30696
32056
5321
18456
18455
32055
5315
5310
27072
32054
27066
18453
30692
30690
18451
18450
18449
5307
32051
18448
18447
18441
18437
18429
32049
30686
5299
5289
30677
32042
18426
18422
18420
18418
5285
5282
26459