0

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

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

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

  • trgr_project_before_insert
  • trgr_project_before_update

并且与文件夹和项目存在外键关系。即表中的folder_idfolder指的是“项目”表。我在项目表中使用“ Set null ”设置“ ON DELETE ”操作。即当在表中删除“ folder_id ”时, MySQL 将为那些已删除“ folder_id ”的行设置 NULLfolder

在我的“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”不起作用(我检查中的代码)为什么会这样。

4

1 回答 1

0

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

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

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

于 2013-03-25T12:03:58.820 回答