我有一个前插入触发器:
DELIMITER //
DROP TRIGGER IF EXISTS product_before_insert //
CREATE TRIGGER product_before_insert
BEFORE INSERT ON product
FOR EACH ROW
BEGIN
IF NEW.created_on='0000-00-00 00:00:00' THEN
SET NEW.created_on = NOW();
SET NEW.modified_on = NOW();
SET NEW.expires_on = ADDDATE(NOW(), INTERVAL 15 DAY);
END IF;
END;//
好吧,现在我想将 New.created_on 作为 TIMESTAMP 并添加 15 天的间隔,以便我的产品表中名为 product.new 的一个标志( bool 列)设置为 false,默认情况下为 true。例如:
new boolean NOT NULL DEFAULT 1 #table name:product
我可以这样吗:
DELIMITER //
DROP TRIGGER IF EXISTS product_before_insert //
CREATE TRIGGER product_before_insert
BEFORE INSERT ON product
FOR EACH ROW
BEGIN
IF NEW.created_on='0000-00-00 00:00:00' THEN
SET NEW.created_on = NOW();
SET NEW.modified_on = NOW();
SET NEW.expires_on = ADDDATE(NOW(), INTERVAL 15 DAY);
CREATE EVENT newflagsetter
ON SCHEDULE AT NEW.created_on + INTERVAL 15 DAY
DO
UPDATE product SET new=0;
END IF;
END;//
非常感谢任何答案..
最佳答案
虽然文档说:
...
You can create an event as part of a stored routine, but an event cannot be created by another event.
我认为它已经过时了,因为我们阅读了以下内容:
E.1. Restrictions on Stored Programs
...
Event Scheduler Restrictions
- ...
- An event may not be created, altered, or dropped by a stored routine, trigger, or another event. An event also may not create, alter, or drop stored routines or triggers. (Bug #16409, Bug #18896).
- ...
关于Mysql Trigger和Event在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20741689/