【问题标题】:Is it possible to insert on the same table on which you are applying an after update trigger? Mysql是否可以在您应用更新后触发器的同一张表上插入? mysql
【发布时间】:2020-05-28 15:51:53
【问题描述】:

所以我在这里确实有理解问题。如果您能帮助消除我的困惑,我将不胜感激。 所以我有 2 个表 table_1 和 table_2 ,这两个表都具有与 'id' pk auto increment 和 'name' varchar(20) 相同的列。 假设我在 table_1 上已经有一个插入后触发器,我在 table_1 中插入的所有内容都将相同的副本存储在 table_2 中。 现在我想在同一个表(table_1)上应用更新触发器来控制是否有人试图修改 table_1 中的名称,它应该从 table_2 中获取名称并将正确的名称插入回 table_1。 我希望我解释得很好。我将分享我制作的更新后触发器,但它不起作用。如果你能帮忙,我会非常高兴。谢谢你

delimiter $$ 
CREATE TRIGGER `Practice`.`table_1_after_UPDATE` AFTER UPDATE ON `table_1` FOR EACH ROW
BEGIN
if  old.name != new.name  then
update table_1 
set name = table_2.name
where id = table_2.id;
end if;
END$$
delimiter ;

【问题讨论】:

  • 1) 在 AFTER UPDATE 触发器中设置任何值都没有意义 - 记录已经更新。 2)您无法更新定义触发器的表。

标签: mysql database triggers database-trigger auto-update


【解决方案1】:
CREATE TRIGGER `Practice`.`table_1_BEFORE_UPDATE` 
BEFORE UPDATE 
ON `table_1` 
FOR EACH ROW
set NEW.name = OLD.name;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    • 2011-10-19
    • 2016-04-08
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2011-07-17
    相关资源
    最近更新 更多