我正在创建一个我想创建触发器的数据库。
如果当前时间超过表中的请求时间5分钟,则此触发器将删除一行。
请求时间是表中的日期时间属性。
如何制作触发器?
答案 0 :(得分:1)
你不想这样做。首先,触发器仅在数据库内发生某些事情时运行(例如插入或更新)。它们与预定作业不同。其次,您通常不希望在预定作业中执行此操作。相反,只需创建一个视图:
create view v_table as
select t.*
from table t
where requesttime >= now() - interval 5 minute;
这将返回有效请求。
然后,在闲暇时,删除旧行 - 如果你真的需要。您很可能想要让他们知道过去发生的事情。但是如果你愿意的话,你可以在星期天早上3点或其他慢的时候删除它们。
答案 1 :(得分:0)
您可能需要考虑在MySQL 5.1.6中添加Event Scheduler。事件可以被视为Cronjob的替代品。
他们的主要优势是:
SELECT * FROM INFORMATION_SCHEMA.EVENTS;
语法类似于:
CREATE EVENT my_event
ON SCHEDULE
EVERY 1 MINUTE
STARTS '2015-01-01 00:15:00'
COMMENT 'Removes forgotten password tokens older thank 1 week.'
DO
DELETE FROM my_table WHERE some_timestamp > NOW();