0

我正在为我的数据库使用 MySql,并且我有一个表“Person”。除其他外,它包含与自身“Person_MarriedTo”的关系,存储为foreigh_key;

这种关系可以是空的,因为不是每个人都结婚了。我想要做的是这个字段可以自动更新。

如果我添加 A 与 B 结婚,则 B 与 A 结婚 如果 B 与 A 离婚,则 A 也与 B 离婚

我认为触发器是可行的方法,但我无法让我的代码按照我想要的方式工作。任何见解将不胜感激。

这是我的触发器代码:

    USE `mydb`;
    DELIMITER $$

    CREATE TRIGGER `Person_BUPD` BEFORE UPDATE ON Person FOR EACH ROW
    BEGIN
        IF OLD.Person_MariedTo != NULL THEN
            UPDATE Person SET Person_MariedTo = NULL WHERE UID_Person =         OLD.Person_MariedTo;
        END IF;
        UPDATE Person SET Person_MariedTo = OLD.UID_Person WHERE UID_Person =         NEW.Person_MariedTo;
    END$$
4

1 回答 1

0

使用触发器无法执行您尝试做的事情。

Within a stored function or trigger, it is not permitted to modify a table that is already being used (for reading or writing) by the statement that invoked the function or trigger. You need to do this some other way.

来源

见这里: MySQL - 插入后更新同一个表的触发器

于 2013-03-29T22:44:09.823 回答