
あるテーブルに行を挿入すると、そのテーブルの1分前以上に挿入された
行を全て削除するようなトリガーの作成は可能でしょうか?
トリガーは作れましたが、そのテーブルに行を挿入すると、
> Can't update table 'submitted' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
といわれます。
トリガって、自分自身のテーブルを操作することはできないんですか?
例えば、table_a に行を挿入すると、table_a に行を挿入するトリガーを
作るのは、無限ループになるので駄目なのは分かります。
でも、table_a に行を挿入すると、table_a のある行を削除するトリガーも
作れないようですがどうしてでしょう?
No.1ベストアンサー
- 回答日時:
マニュアルに以下の記載があります。
「ストアド ファンクションまたはトリガ内では、その関数やトリガを実行したステートメントが ( 読み取り、または書込みに ) すでに使用しているテーブルを改変することはできない。」
http://dev.mysql.com/doc/refman/5.1/ja/routine-r …
理由としてはsweepeaさんが考えているように、SQL実行とトリガ実行が無限に繰り返される可能性があり、現状、再帰呼び出しも実装されていないので、入り口で禁止にしているということでしょう。
ご回答ありがとうございます。
むー、なるほど。
ということは、INSERT時に古いデータを自動削除、みたいなことは
できないんですね。
※INSERT→トリガー→ストアドプロシージャ→DELETEとしても、
やはり無理でした。。。
MySQLが駄目なのか、僕のやろうとしてることが駄目なのか。。。
くやしいです。
どうも、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
トリガって、自分自身のテーブ...
-
条件付DELEATE文について
-
Excel テーブル内の空白行の削除
-
sqlplusで表示が変なので、出力...
-
AccessのSQL 部分一致したデー...
-
テーブルで一番古いレコードだ...
-
Oracleで上書きImportはできま...
-
「テーブルに座って……」という...
-
降順で並び替えて昇順で受け取...
-
SELECT 文の NULL列は?
-
SQLでSUMなどの関数でデータが...
-
テーブルに存在しない列をselec...
-
Accessでデータシートに同じデ...
-
SQLで複数列のデータを複数行に...
-
他のデータベースとのテーブル結合
-
アクセスのリンクテーブル一覧...
-
外部キーだけのテーブル(主キ...
-
SQL*LoaderでCSVから指定した列...
-
SQL、2つのテーブルで条件一致...
-
テーブルリンク リンク元を知...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel テーブル内の空白行の削除
-
条件付DELEATE文について
-
HiRDBのPURGEとDROPの違い
-
トリガって、自分自身のテーブ...
-
Accessのテーブルをすべて削除
-
リレーションについて
-
アクセスのクエリでレコード削...
-
ワークテーブルなのに自動で削...
-
物理削除と論理削除、どっちが...
-
MySQL 一時テーブルにないもの...
-
ACCESSのマクロでテーブルのデ...
-
アクセス2010について
-
マージレプリケーション
-
Access2000の削除クエリで消し...
-
リサイクルビンのテーブル削除方法
-
Access2003 VBAのDELETEについて
-
SQLSERVERで関数作成?
-
MySQLのストアドでファイルを削除
-
SQL削除条件について
-
ACCESSでデータシートビュー上...
おすすめ情報