关于mysql中的删除操作和更新触发器

时间:2013-03-06 10:53:45

标签: mysql triggers

我不是数据库相关部分的经验丰富的人。 这是我的疑问。我正在使用MySQL 我有两张桌子假设

  • 项目(列: - pid,folder_id,p_name)
  • 文件夹(列: - folder_id,名称)

我为表项目创建了两个触发器

  • trgr_project_before_insert
  • trgr_project_before_update

与文件夹和项目存在外键关系。 即folder表中的folder_id在'project'表中引用。 我在项目表中使用“设置空”设置“ ON DELETE ”操作。 即当folder表中删除“ folder_id ”时,MySQL将为那些已删除的行设置NULL“ folder_id

在我的“trgr_project_before_update”触发器中,我有一些代码可以检查

NEW.folder_id IS NULL THEN 
 --some code are here 
END IF;

当我从文件夹表中删除一个“ folder_id ”时,所有行都将“ folder_id ”设置为NULL我认为更新表格。 但是触发器“trgr_project_before_update”不起作用(我的检查中的代码)为什么会这样。

1 个答案:

答案 0 :(得分:0)

它似乎是一个MySQL错误 - bugs.mysql.com/bug.php?id=11472

当由于表上的外键定义而间接更新/删除表的行时,该表上的触发器不会按要求执行

他们说“我们应该修复5.1”请查看MySQL版本。