如何在使用触发器的 SQL 插入后更新另一个表

Posted

技术标签:

【中文标题】如何在使用触发器的 SQL 插入后更新另一个表【英文标题】:How to update another table table after SQL insert with trigger 【发布时间】:2014-01-05 22:59:01 【问题描述】:

我有点被 SQL 触发器所困扰。 (在 phpmyadmin 中),我已经在 *** 中查看了如何解决我的问题,但我找不到答案

我在数据库中有一个名为“items”的表,它有行-ID、名称、价格、section_ID、数字(我得到了多少)。 另一个表是“actions”,它有 rows-ID、when_inserted、which_table、a​​ctions_type_ID(插入、更新、删除。就像那样)、user_ID。

那么,我需要触发器做什么?在表“项目”更新后,我需要在表“操作”中创建新记录,使用新 ID,例如(表“actions”用于插入每个操作在数据库上所做的,来自什么人,何时)

是的,我知道这个问题可能已经回答了,但我找不到。如果您可以帮助我并提供一个链接,指向我可以跟随低谷并做我需要做的事情,那么 - 请这样做。如果你能用语法来回答,那就太棒了。

对不起,我的英语不好。

【问题讨论】:

【参考方案1】:

您需要为每个操作在表项上创建触发器,一个用于插入,一个用于更新,一个用于删除

DROP TRIGGER IF EXISTS `insertItems`;
DELIMITER //
CREATE TRIGGER `insertItems` AFTER UPDATE ON `items`
 FOR EACH ROW BEGIN
INSERT INTO  actions (when_inserted, which_table, actions_type_ID) VALUES (CURRENT_TIMESTAMP, 'items', 'update');
END
//
DELIMITER ;

等等

希望对你有帮助

【讨论】:

以上是关于如何在使用触发器的 SQL 插入后更新另一个表的主要内容,如果未能解决你的问题,请参考以下文章

插入触发器 SQL。插入新表后如何从另一个表中检索值

sql中如何实现级联表的操作

如何在 SQL 中对触发器进行语法化,以便在插入后从同一个表中更新列(oracle 数据库)

PL / SQL触发器在更新或插入后更新同一个表

使用触发器插入后更新另一个表?

如何在 SQL Server 2008 上创建插入更新触发器