ストアドプロシージャとSQLクエリをトリガー内から実行できますか?
手順とクエリ
SET @tmp = (SELECT fvalue FROM ftable WHERE id=2);
SET @SQL = CONCAT('INSERT INTO ',@tmp,' VALUES (''buhambug'')');
PREPARE stmt FROM @SQL;
EXECUTE stmt;
もしそうなら、ルールと例へのリンクは何ですか?何も見つかりませんでした。
ええ、あなたはこのようなトリガーからストアドプロシージャを呼び出すことができます:
Create trigger foo after insert on table for each row
BEGIN
call your_procedure(params);
END$$
終了区切り文字に注意してください。がトリガー内のデフォルトの区切り文字である場合;
も機能しません。MySQLは各コマンドを個別に処理してエラーをスローするためです。トリガー内のコード全体を一緒に実行する必要があります。したがって、トリガーを定義する前に、 $$Delimiter $$
のような別の区切り文字を宣言します。次に、;
トリガー内で正しく機能します。$$を使用してトリガーを終了した後、デフォルトの区切り文字を復元することを忘れないでください。