我正在尝试执行此操作。它给我 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 ) ;
引用文档:
- CONCAT(str1,str2,...)
- 返回连接参数所产生的字符串。可能 有一个或多个参数。
关于mysql - 运行Sql触发器出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34153210/