2013-03-06 118 views
0

我不是DB相关部分的经验丰富的人。 这是我的疑问。我使用的MySQL 我有两个表假设在mysql中删除动作和更新触发器

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

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

  • trgr_project_before_insert
  • trgr_project_before_update

并且存在与文件夹和项目的外键关系。 即folder表中的folder_id在'项目'表中引用。 我在项目表中设置了“ON DELETE”动作与“设置null”。 即当“folder_id”在folder表中删除,则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”不起作用(我检查内部的代码)为什么会这样。

回答

0

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

当表的行更新/间接删除,对表的外键定义的结果,该表上的触发要求,不执行

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