/*
많은 분들이 아시겠지만 모르시는 분들을 위해 팁에 올립니다.
초보가 아닌 분은 뒤로 버튼을 눌러주시면 되겠습니다 ^^;
mysql 5.x 대부터 많은 변화가 있었는데요 이 중 Trigger에 대해 올릴까 합니다.
Trigger란 특정 테이블에 입력, 수정, 삭제가 이루어 졌을 경우 특정 명령을 실행하는 기능인데요,
이 트리거를 이용하여 테이블에 데이타를 수정했을 경우 수정한 날짜를 자동으로 기록하는 예제를 실행해 보도록 하겠습니다.
트리거를 이용하지 않고도 DEFAULT CURRENT_TIMESTAMP UPDATE ON CURRENT_TIMESTAMP 를 사용하면 해결되겠으나,
이미 입력날짜를 DEFAULT CURRENT_TIMESTAMP로 했을 경우 두 칼럼의 날짜를 자동으로 입력이 불가능할때 사용하시면 되겠습니다.
[mysql]트리거를 이용한 날짜 자동 업데이트
준비사항 : mysql 5.0 이상
*/
-- 트리거용 테스트 테이블을 만듭니다
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"
------------------------------------------------------------------------------------------------------------------
이 트리거를 좀더 활용하면 특정 테이블에 데이타가 들어오면 자동으로 다른 테이블에 입력, 수정, 삭제도 가능합니다.
이상 허접한 팁이었습니다.
댓글 4개
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 5430 | 13년 전 | 1444 | ||
| 5429 |
phpman
|
13년 전 | 860 | |
| 5428 | 13년 전 | 1257 | ||
| 5427 |
phpman
|
13년 전 | 847 | |
| 5426 |
PHPㅡASP프로그래머
|
13년 전 | 1088 | |
| 5425 | 13년 전 | 792 | ||
| 5424 | 13년 전 | 733 | ||
| 5423 | 13년 전 | 731 | ||
| 5422 | 13년 전 | 1835 | ||
| 5421 |
PHPㅡASP프로그래머
|
13년 전 | 808 | |
| 5420 |
|
13년 전 | 1633 | |
| 5419 | 13년 전 | 816 | ||
| 5418 | 13년 전 | 708 | ||
| 5417 | 13년 전 | 623 | ||
| 5416 | 13년 전 | 988 | ||
| 5415 | 13년 전 | 790 | ||
| 5414 | 13년 전 | 725 | ||
| 5413 | 13년 전 | 790 | ||
| 5412 | 13년 전 | 1353 | ||
| 5411 | 13년 전 | 864 | ||
| 5410 | 13년 전 | 1270 | ||
| 5409 | 13년 전 | 4251 | ||
| 5408 | 13년 전 | 987 | ||
| 5407 |
ckflower
|
13년 전 | 2426 | |
| 5406 |
ddokkani
|
13년 전 | 1379 | |
| 5405 | 13년 전 | 1591 | ||
| 5404 | 13년 전 | 662 | ||
| 5403 | 13년 전 | 694 | ||
| 5402 |
밤거리빵빵
|
13년 전 | 6023 | |
| 5401 |
PHPㅡASP프로그래머
|
13년 전 | 975 | |
| 5400 |
|
13년 전 | 1191 | |
| 5399 | 13년 전 | 4990 | ||
| 5398 |
부산아무개
|
13년 전 | 1646 | |
| 5397 | 13년 전 | 2449 | ||
| 5396 | 13년 전 | 1844 | ||
| 5395 | 13년 전 | 1052 | ||
| 5394 | 13년 전 | 1125 | ||
| 5393 | 13년 전 | 1043 | ||
| 5392 |
아르toria
|
13년 전 | 759 | |
| 5391 |
|
13년 전 | 1145 | |
| 5390 |
디지털홍익인간
|
13년 전 | 7701 | |
| 5389 | 13년 전 | 3106 | ||
| 5388 | 13년 전 | 869 | ||
| 5387 |
WaaNee
|
13년 전 | 1905 | |
| 5386 | 13년 전 | 2103 | ||
| 5385 | 13년 전 | 4624 | ||
| 5384 | 13년 전 | 934 | ||
| 5383 | 13년 전 | 2131 | ||
| 5382 | 13년 전 | 663 | ||
| 5381 |
JacobJeon
|
13년 전 | 1083 | |
| 5380 | 13년 전 | 1137 | ||
| 5379 | 13년 전 | 686 | ||
| 5378 | 13년 전 | 10466 | ||
| 5377 | 13년 전 | 857 | ||
| 5376 | 13년 전 | 1459 | ||
| 5375 | 13년 전 | 838 | ||
| 5374 | 13년 전 | 846 | ||
| 5373 | 13년 전 | 2066 | ||
| 5372 | 13년 전 | 1691 | ||
| 5371 |
|
13년 전 | 1638 | |
| 5370 | 13년 전 | 2906 | ||
| 5369 |
아자12345
|
13년 전 | 1012 | |
| 5368 | 13년 전 | 706 | ||
| 5367 | 13년 전 | 1085 | ||
| 5366 | 13년 전 | 2150 | ||
| 5365 | 13년 전 | 1568 | ||
| 5364 | 13년 전 | 1094 | ||
| 5363 |
|
13년 전 | 1356 | |
| 5362 | 13년 전 | 816 | ||
| 5361 | 13년 전 | 1346 | ||
| 5360 | 13년 전 | 709 | ||
| 5359 | 13년 전 | 1368 | ||
| 5358 | 13년 전 | 1199 | ||
| 5357 | 13년 전 | 1596 | ||
| 5356 | 13년 전 | 1095 | ||
| 5355 |
techer
|
13년 전 | 1351 | |
| 5354 |
|
13년 전 | 1011 | |
| 5353 | 13년 전 | 741 | ||
| 5352 | 13년 전 | 821 | ||
| 5351 | 13년 전 | 1196 | ||
| 5350 | 13년 전 | 741 | ||
| 5349 |
|
13년 전 | 1444 | |
| 5348 | 13년 전 | 853 | ||
| 5347 | 13년 전 | 759 | ||
| 5346 | 13년 전 | 872 | ||
| 5345 | 13년 전 | 815 | ||
| 5344 |
후라보노보노
|
13년 전 | 1960 | |
| 5343 | 13년 전 | 1157 | ||
| 5342 | 13년 전 | 1125 | ||
| 5341 | 13년 전 | 2073 | ||
| 5340 |
|
13년 전 | 1117 | |
| 5339 |
AMDbest
|
13년 전 | 739 | |
| 5338 | 13년 전 | 737 | ||
| 5337 |
프로프리랜서
|
13년 전 | 1476 | |
| 5336 |
프로프리랜서
|
13년 전 | 922 | |
| 5335 | 13년 전 | 720 | ||
| 5334 |
|
13년 전 | 974 | |
| 5333 | 13년 전 | 2835 | ||
| 5332 | 13년 전 | 1519 | ||
| 5331 | 13년 전 | 1322 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기