我有一个前插入触发器:
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.eg:
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;//
非常感谢任何答案..
答案 0 :(得分:2)
虽然文档说:
...
您可以将事件创建为存储例程的一部分,但是可以创建事件 不能由其他事件创建。
我认为它已经过时,因为我们阅读了以下内容:
E.1. Restrictions on Stored Programs
...
事件计划程序限制
- ...
- 存储的例程,触发器或其他事件可能无法创建,更改或删除事件。事件也可能无法创建,更改或删除存储的例程或触发器。 (Bug #16409,Bug #18896)。
- ...