Mysql触发器在插入当前表后更新其他表
我有两张桌子。一个叫做“借来的”,另一个叫做“设备”。我在设备表中有一个字段,默认设置为0。我希望在添加表中“借用”的条目时。表“设备”中的条目由触发器设置为1。表ID“借用”的确切位置=表ID为“设备” 我意识到这一点的想法是:Mysql触发器在插入当前表后更新其他表,mysql,sql,triggers,mariadb,Mysql,Sql,Triggers,Mariadb,我有两张桌子。一个叫做“借来的”,另一个叫做“设备”。我在设备表中有一个字段,默认设置为0。我希望在添加表中“借用”的条目时。表“设备”中的条目由触发器设置为1。表ID“借用”的确切位置=表ID为“设备” 我意识到这一点的想法是: BEGIN UPDATE `devices` SET devices.borrowed = "1" WHERE devices.id = borrowed.id LIMIT 1; END 或 我的结果是所有记录都设置为1,而不
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
应该可以确定借用了哪些设备。如果您需要一个触发器来执行插入操作
,那么删除操作
和更新操作
也需要一个触发器,我猜您使用的是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
应该可以确定借用了哪些设备。如果您需要一个触发器来触发插入
,您还需要一个触发器来触发删除
和更新
用您正在使用的数据库标记您的问题。表中是否有多行<代码>限制1如果没有ORDER BY可能会不可预测地选择一行。请使用您正在使用的数据库标记您的问题。表中是否有多行<代码>限制1没有ORDER BY可能会不可预测地选择一行。