【问题标题】:What is MySQL's correct syntax for before delete trigger?MySQL 删除前触发器的正确​​语法是什么?
【发布时间】:2015-10-07 22:54:46
【问题描述】:

我想创建一个删除前触发器,从两个不同的表中删除行。但我不知道要使用哪些参数。

我有一个 house 表,当我删除一行时,我想删除另外两个表中的每一行:user_house 和firm_house,其中包含与触发事件的那个相同的 house 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_idhouse_id
  • firm_houise 加入了 firm_idhouse_id

【问题讨论】:

    标签: mysql triggers sql-delete


    【解决方案1】:

    使用OLD 引用在触发器中被删除的记录。然后使用id 从其他表中删除。

    DELETE FROM user_house WHERE house_id = OLD.house_id; 
    DELETE FROM firm_house WHERE house_id = OLD.house_id; 
    

    【讨论】:

    • 我在尝试应用时收到“ERROR 1054: Unknown column 'id' in 'OLD'”?
    • 你的桌子看起来怎么样?您的house 表没有id 列吗?并且有user_house 一个house_id 列?
    • 我让它工作了,old.house_id;。非常感谢您的帮助:)
    猜你喜欢
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多