0

csv をテーブルにインポートした後にファイルを書き込むトリガーを作成することに興味があります。ファイル名にタイム スタンプが含まれており、コードが正しく動作していません。これが私がこれまでに持っているものです。

DELIMITER $$
CREATE TRIGGER peachtree_trigger
AFTER INSERT ON peachtree
FOR EACH ROW
BEGIN
SET @sql_text = CONCAT("SELECT * FROM peachtree 
INTO OUTFILE '/srv/samba/share/peachtree_",
DATE_FORMAT(NOW(), '%Y_%m_%D'), ".csv'");
PREPARE s1 FROM @sql_text;
EXECUTE s1;
DROP PREPARE s1;
END $$ DELIMITER ;

set ステートメントは、トリガーの外部で正常に機能します。ただし、上記のコード セットを実行してから、SHOW TRIGGERS IN テストを実行すると、空のセットを返します。誰かが助けてくれたら、とても感謝しています。

4

1 に答える 1

2

http://dev.mysql.com/doc/refman/5.5/en/store-program-restrictions.htmlから

<中略>

SQL プリペアド ステートメント (PREPARE、EXECUTE、DEALLOCATE PREPARE) はストアド プロシージャで使用できますが、ストアド ファンクションまたはトリガーでは使用できません。したがって、ストアド ファンクションとトリガーは動的 SQL を使用できません (ステートメントを文字列として構築し、実行する場合)。

</中略>

于 2013-01-18T19:58:19.183 に答える