MySQL 删除前触发器的正确语法是什么?
What is MySQL's correct syntax for before delete trigger?
我想创建一个删除前触发器,从两个不同的 table 中删除行。但是我不知道要使用哪些参数。
我有一栋房子 table,当我删除一行时,我想删除另外两个 table 中的每一行:user_house 和 firm_house,其中包含与触发事件的房屋 ID 相同的房屋 ID。
FOR EACH ROW
是什么意思?我该如何正确设置触发器?
USE `mydb`;
DELIMITER $$
CREATE TRIGGER `deleteUnions` BEFORE DELETE ON `house`
FOR EACH ROW
BEGIN
DELETE FROM user_house WHERE ?? = ??;
DELETE FROM firm_house WHERE ?? = ??;
END
关于结构的一些细节:
user_house
由 user_id
和 house_id
加入;
firm_houise
加入了 firm_id
和 house_id
。
引用OLD
触发器中被删除的记录。然后使用id
从其他表中删除。
DELETE FROM user_house WHERE house_id = OLD.house_id;
DELETE FROM firm_house WHERE house_id = OLD.house_id;
我想创建一个删除前触发器,从两个不同的 table 中删除行。但是我不知道要使用哪些参数。
我有一栋房子 table,当我删除一行时,我想删除另外两个 table 中的每一行:user_house 和 firm_house,其中包含与触发事件的房屋 ID 相同的房屋 ID。
FOR EACH ROW
是什么意思?我该如何正确设置触发器?
USE `mydb`;
DELIMITER $$
CREATE TRIGGER `deleteUnions` BEFORE DELETE ON `house`
FOR EACH ROW
BEGIN
DELETE FROM user_house WHERE ?? = ??;
DELETE FROM firm_house WHERE ?? = ??;
END
关于结构的一些细节:
user_house
由user_id
和house_id
加入;firm_houise
加入了firm_id
和house_id
。
引用OLD
触发器中被删除的记录。然后使用id
从其他表中删除。
DELETE FROM user_house WHERE house_id = OLD.house_id;
DELETE FROM firm_house WHERE house_id = OLD.house_id;