mysql触发器使用动态文件名写入文件

时间:2013-01-18 19:49:58

标签: mysql triggers file-io

我有兴趣创建一个触发器,在我将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测试时;它返回一个空集。如果有人能提供帮助,我将非常感激。

1 个答案:

答案 0 :(得分:2)

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

<剪断>

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

< /剪断>