2013-03-29 29 views
0

我正在使用MySql,爲我的數據庫和我有一個表「人」。除此之外,它包含與作爲foreigh_key存儲的本身「Person_MarriedTo」的關係;UPDATE更新同一表的不同行的外鍵

這種關係可以爲空,因爲它不是每個人都結婚了。我想要做的是該字段可以自動更新。

如果我添加一個結婚的爲B,那麼B嫁給一個 如果從A B deivorce,那麼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$$ 

回答

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

相關問題