在UPDATE更新同一表的不同行的外键

时间:2013-03-29 22:17:02

标签: mysql database triggers

我正在使用MySql,对于我的数据库,我有一个表“人”。除此之外,它包含与作为foreigh_key存储的“Person_MarriedTo”本身的关系;

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

如果我加上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$$

1 个答案:

答案 0 :(得分: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.

Source

见这里: MySQL - Trigger for updating same table after insert