2014-04-04 73 views
0

我有三個表如下,結合外鍵與觸發器

  1. 計算器表
  2. 回答表
  3. 計算器回答表

計算器回答表是與其他兩個表(它有兩個外鍵給其他兩個表)。我需要的是在評估者表從評估者表中刪除時,刪除評估者提供的所有答案。我刪除了Evaluator Answer表的記錄時創建了一個刪除答案的觸發器。因此,預期的結果是,

  1. 從計算器表刪除評估
  2. 刪除(使用外鍵)
  3. 使用觸發器

刪除答案,但問題是第三次從計算器回答表相應記錄一步不行。我直接從Evaluator Answer表中刪除一條記錄。然後觸發工程。任何人都知道這個解決方案?

回答

0

剛剛找到答案。 mysql不支持 - http://bugs.mysql.com/bug.php?id=61555

+2

級聯不會觸發MySQL中的觸發器,因爲級聯和外鍵約束通常在InnoDB內部的存儲引擎層內處理,而不是在服務器層處理。代碼處理觸發器觸發不知道級聯發生。你的解決方法是使用'ON DELETE RESTRICT',然後在「evaluateator」表上使用'BEFORE DELETE'觸發器,首先從其他表中刪除子行,而不是讓'ON DELETE CASCADE'處理它。 –