我正在使用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$$
答案 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.