我有兴趣创建一个触发器,将csv导入到表中后将写入文件。文件名包含时间戳,我的代码无法正常工作。到目前为止,这就是我所拥有的。DELIMITER $$CREATE TRIGGER peachtree_triggerAFTER INSERT ON peachtreeFOR EACH ROWBEGINSET @sql_text = CONCAT("SELECT * FROM peachtreeINTO 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时;它返回一个空集。如果有人可以帮助我,我将非常感激。 最佳答案 来自http://dev.mysql.com/doc/refman/5.5/en/stored-program-restrictions.htmlSQL预准备语句(PREPARE,EXECUTE,DEALLOCATE PREPARE)可以在存储过程中使用,但不能用于存储函数或触发器。因此,存储的函数和触发器不能使用动态SQL(将语句构造为字符串然后执行它们)。关于mysql - mysql触发器写动态文件名的文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14406556/