Mysql,触发器更新会影响同一个表的多行

时间:2018-02-06 05:42:58

标签: mysql

我需要一些帮助以解决以下问题:

我有一个表“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

0 个答案:

没有答案