mysql에서 일정시간이 지나면 자동으로 데이터가 삭제되는 방법

mysql에서 일정시간이 지나면 자동으로 데이터가 삭제되는 방법

QA

mysql에서 일정시간이 지나면 자동으로 데이터가 삭제되는 방법

본문

mysql에서 일정시간(ex. 1시간, 1일)이 지나면 특정 테이블에서
특정 레코드가 자동으로 삭제되는 이벤트를 만들려고 하는데 생각처럼 쉽지가 않네요..

검색해보니 cron이나 TIMESTAMP 같은 기능을 사용해보라는데
원하는 결과물을 얻지 못해서 이렇게 도움구해봅니다. 

 

어떤 글에서 아래와 같이 하면 된다고 하던데..

table 에 added_time 이라는 TIMESTAMP 컬럼에 default value로 CURRENT_TIMESTAMP 주시고 

delete from table where DATE_SUB(NOW(), INTERVAL 1 DAY) > added_time; 

 

위처럼 해보니 where 다음에 조건을 걸어도 테이블의 모든 레코드가 삭제되고

삭제도 1일이 지나서 되는게 아니라 바로 삭제가 되더라구요..

위 기능을 구현하려면 어떤 방식으로 접근해야하는지 알려주시면 정말 감사하겠습니다ㅜㅜ

이 질문에 댓글 쓰기 :

답변 3

extend/user.config.php 에 아래 코드를 넣으면 됩니다

-- 실행은 홈페이지에 접속가 있으면 하루에 한번 작동합니다(크론 필요없고 이런 방식으로 충분합니다)

-- 기본환경설정 여분필드 1번(cf_1)에 처리 일자를 기록합니다

 

$g5_time_ymd = G5_TIME_YMD;

if($bo_table=='특정테이블아이디' && $config[cf_1] <> $g5_time_ymd ){

 sql_query("update $g5[config_table] set cf_1 = '$g5_time_ymd' ");

sql_query("delete from 특정테이블명 where wr_id='특정레코드 wr_id' ");

}

 

질문을 할때는 특정 테이블, 특정 레코드 이런식이 아니라 실제 테이블, 삭제할 실제 레코드 조건을

명시해야 명확한 코드를 만들 수가 있죠

 

 

특정시간이되면 지정한 테이블 게시글 전체삭제

이부분을 저같은 경우에는 게시판 속성자체에 해놓진 않았지만

해당게시판을 쿼리에 직업넣어서 일정시간이후에 해당글의 내용이 바뀌게 사용중입니다.

응용한다면 게시글의 이동이나 자동삭제가 가능하게 할수있을것 같습니다.

 

 

파일명 test.php 경로>www/bbs/

www/common.php 에

// 일정 기간이 지난 DB 데이터 삭제 및 최적화

include_once(G5_BBS_PATH.'/db_table.optimize.php');

이런부분이 있는데 응용하여

// 일정 기간이 지난 DB 데이터 삭제 및 최적화

include_once(G5_BBS_PATH.'/db_table.optimize.php'); 아랫줄에 인클루드 하였습니다.

include_once(G5_BBS_PATH.'/test.php'); 

 

 

 

 

<?php

if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

 

// 최고관리자일 때만 실행

if($config['cf_admin'] != $member['mb_id'] || $is_admin != 'super')

    return;

 

// 확인 할 것 --

 

$sql = "update 특정게시판명 set wr_1 = 'Y' where wr_1 = 'N' and 'wr_2' < '".G5_TIME_YMD."'";

 

$result = sql_query($sql);

?>

 

이렇게 하나 만들어 놓은것이 있는데요

어느페이지를 보고있더라고 쿼리문이 돌아가도록 만들었습니다.

저같은 경우에는 wr_1이 N(완료전) wr_1이 Y(완료)로 바뀌게 했는데요

wr_2에는 값이 2016-04-02 이런식으로 날짜를 넣었습니다

제가 wr_2에 넣은 날짜가 현재 시간보다 작다면 wr_1의 값을 바꾸어라고

업데이트문을 실행한것인데요

 

도움이 되실진 모르겠지만 응용하시면 해당글을 비밀글로 이동할수도 잇으리라 생각됩니다.

제가 G5_TIME_YMD 현재 시간으로 비교를하여 해당글의 value의 값을 바꾼것처럼

G5_TIME_YMD대신에 wr_2날짜의 + 3일을 조건으로 준다면 

값을 바꾸는것말고 삭제를 한다는것도 가능할것같습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 123,673 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT