내 머릿속 데이터베이스

[MYSQL] 일정 시간이 지난 데이터 자동삭제 본문

Programming/Database

[MYSQL] 일정 시간이 지난 데이터 자동삭제

파도소리 2015. 1. 9. 01:49

※ 트리거로 지우기

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() 함수가 자꾸 나오는데 이 함수의 대한 자세한 설명은 이곳에서 한다.

http://mydb.tistory.com/194

Comments