0

私はdb関連の部分の経験者ではありません。これが私の疑問です。私はMySQLを使用しています私は2つのテーブルを想定しています

  • プロジェクト (列:-pid、folder_id、p_name)
  • フォルダ(列:-folder_id、name)

そして、テーブルプロジェクト用に2つのトリガーを作成しました

  • trgr_project_before_insert
  • trgr_project_before_update

そして、フォルダとプロジェクトには外部キーの関係があります。つまり、テーブルのfolder_idはfolder「プロジェクト」テーブルを参照しています。そして、プロジェクトテーブルで「Setnull」を使用して「 ONDELETE」アクションを設定しました。つまり、テーブルで「folder_id」が削除されると、MySQLは「 folder_idfolderを削除した行にNULLを設定します。

そして、私の「trgr_project_before_update」トリガーには、チェックするコードがあります

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

フォルダテーブルから「 folder_id」を1つ削除すると、すべての行で「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 に答える