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 test; 它返回一个空集。如果有人可以提供帮助,我将不胜感激。

4

1 回答 1

2

来自http://dev.mysql.com/doc/refman/5.5/en/stored-program-restrictions.html

<剪辑>

SQL 准备语句(PREPARE、EXECUTE、DEALLOCATE PREPARE)可用于存储过程,但不能用于存储函数或触发器。因此,存储函数和触发器不能使用动态 SQL(您将语句构造为字符串然后执行它们)。

</snip>

于 2013-01-18T19:58:19.183 回答