- Today
- Total
내 머릿속 데이터베이스
[MYSQL] 일정 시간이 지난 데이터 자동삭제 본문
※ 트리거로 지우기
mysql> DELIMITER $$CREATE TRIGGER TR_TEST
AFTER INSERT ON A테이블
FOR EACH ROW
BEGIN
DELETE FROM A테이블
WHERE 등록일시 < DATE_ADD(now(), INTERVAL -5 MINUTE);
END;
$$
DELIMITER;
하지만 cafe24.com은 트리거를 지원안한다. (보안문제상이나 뭐라나..)
더불어 프로시저, 펑션도 같은 이유로 지원안함.
그래서 그냥 insert 할때 삭제하기로 함
관계형 테이블 삭제 방법에는 2가지가 있다.
1. DELETE JOIN (출처 : http://pusankjs.blog.me/40128071581)
DELETE
E-mail.*,
Account.*,
Site.*
User.*,
FROM
User INNER JOIN Site
ON (Site.UserSeq = User.seq) INNER JOIN Account
ON (Account.SiteSeq = Site.seq) INNER JOIN Email
ON (Email.AccountSeq = Account.seq)
WHERE User.seq = @UserSeq;
2. 서브쿼리를 이용한 삭제
DELETE FROM order_item WHERE order_idx IN (SELECT order_idx FROM orderlist WHERE order_date < DATE_ADD(now(), INTERVAL -1 DAY))
DELETE FROM orderlist WHERE order_date < DATE_ADD(now(), INTERVAL -1 DAY)
DATE_ADD() 함수가 자꾸 나오는데 이 함수의 대한 자세한 설명은 이곳에서 한다.