[英]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
,则还需要一个触发器来进行delete
和update
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.