mysql触发器

来源:百度知道 编辑:UC知道 时间:2024/06/04 00:41:55
我想在每天的凌晨1点删除lclass_tbl表的一些信息。
下面的删除语句单独可以运行,但是不知道怎么在mysql的触发器上执行。
请高手指教。。。

create trigger tri_lclass_tbl
before delete on lclass_tbl
for each row
begin
if(substr(now(),12,14) like '01:00:00') then
delete from lclass_tbl where lClass_nStatus in (1,3)
and lClass_nExecuteID in (select PPI_NID from planpracticeitem_tbl where ppi_sApplicationEndDate < now());
end if;
end;

触发器只有经事件触发后才能执行,上面对时间的判断在触发器里面,没有事件触发是不会运行的,这种情况一般利用mysql的事务调度器(event scheduler)和存储过程比较容易实现。具体如下:
事务调度器
CREATE EVENT `del_lclass_tbl ` ON SCHEDULE EVERY 1 DAY STARTS '2009-05-11 01:00:00' ON COMPLETION NOT PRESERVE ENABLE DO call sp_delete_lclass_tbl(null);
存储过程
delimiter $
drop procedure if exists sp_delete_lclass_tbl;$
create procedure sp_delete_lclass_tbl()
begin
delete from lclass_tbl where lClass_nStatus in (1,3)
and lClass_nExecuteID in (select PPI_NID from planpracticeitem_tbl where ppi_sApplicationEndDate < now());
end;$
delimiter ;