2

ストアドプロシージャとSQLクエリをトリガー内から実行できますか?

手順とクエリ

SET @tmp = (SELECT fvalue FROM ftable WHERE id=2);

SET @SQL = CONCAT('INSERT INTO ',@tmp,' VALUES (''buhambug'')');
PREPARE stmt FROM @SQL;
EXECUTE stmt;

もしそうなら、ルールと例へのリンクは何ですか?何も見つかりませんでした。

4

1 に答える 1

2

ええ、あなたはこのようなトリガーからストアドプロシージャを呼び出すことができます:

Create trigger foo after insert on table for each row
 BEGIN
  call your_procedure(params);
 END$$

終了区切り文字に注意してください。がトリガー内のデフォルトの区切り文字である場合;も機能しません。MySQLは各コマンドを個別に処理してエラーをスローするためです。トリガー内のコード全体を一緒に実行する必要があります。したがって、トリガーを定義する前に、 $$Delimiter $$のような別の区切り文字を宣言します。次に、;トリガー内で正しく機能します。$$を使用してトリガーを終了した後、デフォルトの区切り文字を復元することを忘れないでください。

于 2012-09-20T16:36:13.090 に答える