在当前表上插入后,MySQL触发器更新其他表

时间:2018-09-25 11:41:42

标签: mysql sql triggers mariadb

我有两个桌子。一个称为“借用”,另一个称为“设备”。我在设备表中有一个字段,默认情况下设置为0。我想在表“借入”中添加一个条目。通过触发器将表“设备”中的条目设置为1。表ID“借用”的确切位置=表ID是“设备”。

我的想法是:

BEGIN

   UPDATE `devices` 

    SET devices.borrowed = "1"

    WHERE devices.id = borrowed.id

    LIMIT 1;
END

    DROP TRIGGER IF EXISTS `test`;CREATE DEFINER=`root`@`localhost` TRIGGER `test` AFTER INSERT ON `borrowed` FOR EACH ROW BEGIN UPDATE `devices` SET devices.borrowed = 1 WHERE devices.id = borrowed.id LIMIT 1; END

我的结果是所有记录都设置为1,而不仅仅是具有相同序列号的记录。使用LIMIT命令,他只能将1设置为正确的值,而将序列号错误的设备设置为1。

1 个答案:

答案 0 :(得分:3)

我猜您正在使用MySQL,并且您想要这样的东西

T

我认为触发器不是实现这种逻辑的好方法。外键关系和CREATE TRIGGER trg_borrowed_insert AFTER INSERT ON borrowed FOR EACH ROW BEGIN UPDATE devices SET devices.borrowed = 1 WHERE devices.id = new.id; END; 应该很好地确定借用了哪些设备。如果您需要JOIN的触发器,那么insertdelete也需要一个触发器。