• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:トリガって、自分自身のテーブルを操作することはできない?)

トリガーによるテーブル操作に制約がある理由とは?

このQ&Aのポイント
  • トリガーを使用して自分自身のテーブルを操作することはできません。
  • トリガーを使用してテーブルに行を挿入するときには、そのテーブル内の行を削除することはできません。
  • これは、無限ループやデータの一貫性を保つための制約です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

マニュアルに以下の記載があります。 「ストアド ファンクションまたはトリガ内では、その関数やトリガを実行したステートメントが ( 読み取り、または書込みに ) すでに使用しているテーブルを改変することはできない。」 http://dev.mysql.com/doc/refman/5.1/ja/routine-restrictions.html 理由としてはsweepeaさんが考えているように、SQL実行とトリガ実行が無限に繰り返される可能性があり、現状、再帰呼び出しも実装されていないので、入り口で禁止にしているということでしょう。

sweepea
質問者

お礼

ご回答ありがとうございます。 むー、なるほど。 ということは、INSERT時に古いデータを自動削除、みたいなことは できないんですね。 ※INSERT→トリガー→ストアドプロシージャ→DELETEとしても、 やはり無理でした。。。 MySQLが駄目なのか、僕のやろうとしてることが駄目なのか。。。 くやしいです。 どうも、ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A