2013-03-06 151 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版本。