sqlfile:中的所有结构表
我们想要触发下一个查询:
CREATE TRIGGER `INSERT NEW ROW INTO MenuPosition` AFTER INSERT ON `Menu`
FOR EACH ROW INSERT INTO MenuPosition
SET
MenuId=NEW.MenuId,
Position =
(SELECT 1 + IFNULL((SELECT MAX(Position) FROM MenuPosition), 0))
但是当我们在表 Menu
中插入行时,我们会收到错误 您无法在 FROM 子句 Update 中指定要更新的目标表“MenuPosition”
请告诉我我的错误在哪里以及如何正确?
最佳答案
你的代码很难读。您从哪里想到这样命名触发器的想法?
无论如何,您的代码是:
CREATE TRIGGER `INSERT NEW ROW INTO MenuPosition`
AFTER INSERT ON `Menu`
FOR EACH ROW
BEGIN
INSERT INTO MenuPosition
SET MenuId = NEW.MenuId,
Position = (SELECT 1 + IFNULL((SELECT MAX(Position) FROM MenuPosition), 0))
END
就我个人而言,我不使用 insert 。 。 。 set
语法——它不是标准的。所以,我想这是一个限制。以下内容应该有效:
CREATE TRIGGER `INSERT NEW ROW INTO MenuPosition`
AFTER INSERT ON `Menu`
FOR EACH ROW
BEGIN
INSERT INTO MenuPosition(MenuID, Position)
SELECT NEW.MenuId, 1 + IFNULL( (SELECT MAX(Position) FROM MenuPosition), 0)
END
关于mysql - SQL查询触发器哪里出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25234480/