mysql - 运行Sql触发器出错

标签 mysql sql triggers

我正在尝试执行此操作。它给我 mysql 语法错误。无法弄清楚为什么。

CREATE TRIGGER trig1
AFTER INSERT OR UPDATE ON table1 
FOR EACH ROW 
INSERT INTO table2 (id,entity_type,`data`,processed,created_at,last_updated_at ) 
VALUES ( DEFAULT , 'campaigns', 
'{"campaign_id":"' CONCAT NEW.campaign_id CONCAT '","name":"' CONCAT NEW.name CONCAT '","advertiser_id":"' CONCAT NEW.advertiser_id CONCAT '","start_date":"' CONCAT NEW.start_date 
CONCAT '","end_date":"' CONCAT NEW.end_date CONCAT '","status":"' CONCAT NEW.status CONCAT '","pacing":"' CONCAT NEW.pacing CONCAT '","budget_value":"' CONCAT NEW.budget_value 
CONCAT '","gross_budget":"' CONCAT NEW.gross_budget CONCAT '"}' ,
0, CURRENT_TIMESTAMP , CURRENT_TIMESTAMP) ;

最佳答案

您在语句中错误地使用了 CONCAT

应该如下面的语句所示:

VALUES ( DEFAULT , 'campaigns',   
CONCAT( '{"campaign_id":"', NEW.campaign_id,
        '","name":"', NEW.name,
        '","advertiser_id":"', NEW.advertiser_id,
        '","start_date":"', NEW.start_date,
        '","end_date":"', NEW.end_date,
        '","status":"', NEW.status,
        '","pacing":"', NEW.pacing,
        '","budget_value":"', NEW.budget_value,
        '","gross_budget":"', NEW.gross_budget,
        '"}' ),  
0, CURRENT_TIMESTAMP , CURRENT_TIMESTAMP ) ;

引用文档:

关于mysql - 运行Sql触发器出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34153210/

相关文章:

php - 数组到字符串的转换(使用 json_encode 方法时出现 SQL 错误)

php - 在 php/mysql 中导入带有图像的 excel 文件

mysql - Sequelize - 不区分大小写,例如

MySQL根据每个公司ID的多个其他行插入新行

php - 解析 JSON 数据并插入到 MySQL

php - 避免在插入手动递增的收据编号时发生冲突

MySQL 查询浏览器替代品

MySQL 列更新与触发器

mysql - 使用 SQL 触发器设置日期时间列

sql - ORA-00036 : maximum number of recursive SQL levels (50) exceeded after configuring toplink to use bind variables