如何为MySQL DB创建自动更新触发器?

问题描述:

我有产品表(动态更改)和数据导出表。我需要一个触发器,每天一次将表格产品的新产品添加到表格输出中。我的代码是:如何为MySQL DB创建自动更新触发器?

CREATE TRIGGER auto_update 
BEFORE UPDATE 
FOR EACH ROW 
SET export.name = product.prod_name, export.link=product.prod_link, export.price=product.prod_price 
WHERE product.prod_type='product'; 

但是这段代码不起作用。如何解决它?有任何想法吗?

+0

我认为你需要一个事件而不是触发器。 –

+0

也许是事件,我在SQL中很新。 –

由于您希望此代码按计划执行,因此您可能希望使用事件调度程序。

请看这里:https://dev.mysql.com/doc/refman/5.7/en/event-scheduler.html

从这里就可以做这样的事情:

CREATE EVENT e_store_ts 
    ON SCHEDULE 
     EVERY 10 SECOND 
    DO 
     INSERT INTO myschema.mytable VALUES (UNIX_TIMESTAMP()); 

这将创建执行每10秒,并插入一个UNIX时间戳到表mytable新的事件。您可以使用ALTER更改事件,您可以使用DROP删除它们。玩的开心!

所以在你的情况下,创建一个每天执行的事件,执行你想要执行的表达式(DO子句)。

+0

如何在不重新输入整个表的情况下只添加新项目?据我了解有一个命令'WHERE NOT EXISTS',但如果我修改我的代码像这样'INSERT INTO'export_copy'('name','link')WHERE NOT EXISTS(SELECT p.post_title,p.guid FROM wp_posts p WHERE p.post_type ='product')'我有一个错误,说'WHERE NOT EXISTS'附近的语法不正确。 –

+0

确实有很多产品,你每天都增加很多吗? –

+0

不多,但我很懒。我想现在创建脚本并忘记它:) –