我需要一些帮助以解决以下问题:
我有一个表“item”,其中包含3列[name | description | panel],如下所示:
|---name---|---description---|---panel---|
|----------|-----------------|-----------|
|name1 | this is a glass | name4 |
|name2 | this is a plate | name4 |
|name3 | this is a fork | name4 |
|name4 | this is a panel | name4 |
|name5 | this is a spoon | name4 |
|name6 | this is a glass | name9 |
|name7 | this is a plate | name9 |
|name8 | this is a fork | name9 |
|name9 | this is a panel | name9 |
|name10 | this is a spoon | name9 |
此表包含一些项目,存储位置定义为面板。但小组本身就是一个项目。
我想要的是:如果我更新name4中的name4,它也会在面板列中更新,其中panel = name4。
我使用存储过程在触发器之前/之后尝试了许多解决方案。但总是存在相同的错误“无法在存储的函数/触发器中更新表'项',因为它已被调用此存储函数/触发器的语句使用。”我明白了......
但是有没有走动?
我的代码如下:
CREATE DEFINER=`remote_root`@`%` TRIGGER `db`.`U_item` AFTER UPDATE ON `item` FOR EACH ROW
BEGIN
IF (NEW.name<> OLD.name)
THEN
UPDATE item
SET
panel= NEW.name
Where (panel=OLD.name);
END IF;
END