mysql触发器在插入当前表后更新其他表

pinkon5k  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(366)

我有两张table。一个叫做“借来的”,另一个叫做“设备”。我在devices表中有一个默认设置为0的字段。我想在表中添加一个条目“借用”。表“devices”中的条目被触发器设置为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。

1l5u6lss

1l5u6lss1#

我猜你正在使用mysql,你想要这样的东西

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 弄清楚哪些设备是借来的应该没问题。如果你需要扳机 insert ,你也需要一个 delete 以及 update .

相关问题