创建触发器时处理不正确

时间:2019-02-08 23:46:33

标签: mysql sql phpmyadmin

我正在尝试在phpmyadmin中创建触发器,但出现错误

当我在SQL终端中运行此查询时,它运行良好。但是在触发器创建过程中,出现错误的流程错误,查询失败。

set @sql = CONCAT(
    "SELECT * INTO OUTFILE 'C:/database/",DATE_FORMAT(NOW(), '%m-%Y'),
    ".csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '""' LINES TERMINATED BY '\r\n ' FROM weekevents"
);

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

1 个答案:

答案 0 :(得分:0)

在MySQL中,触发器中不允许使用动态SQL。

来自the documentation

  

SQL准备好的语句(def foo(l,n,i,j): for item in l: if (i in item and j in item): return True return False PREPAREEXECUTE)可用于存储过程,但不能用于存储函数或触发器。因此,存储的函数和触发器不能使用动态SQL (将语句构造为字符串然后执行它们)。

您实际上应该会出错:

  

#1336-存储函数或触发器中不允许使用动态SQL