0

データベースにMySqlを使用しており、テーブル「Person」があります。とりわけ、それ自体との関係「Person_MarriedTo」が foreigh_key として格納されています。

全員が結婚しているわけではないため、この関係は null になる可能性があります。私がやりたいことは、このフィールドを自動的に更新できるようにすることです。

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 に答える