繁体   English   中英

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

[英]Mysql Trigger updating other table after insert on current table

我有两张桌子。 一个称为“借用”,另一个称为“设备”。 我在设备表中有一个字段,默认情况下设置为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。

我猜您正在使用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 ,则还需要一个触发器来进行deleteupdate

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM