作为我正在编写的MySQL触发器的一部分,我有一个INSERT ... SELECT查询正在返回:


  第7行的错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以在第33行的'pp2 (curr_code, pricing_id, pid, title, startdate, enddate, priority, enabled) S'附近使用正确的语法


INSERT INTO product_pricing pp2 (curr_code, pricing_id, pid, title, startdate, enddate, priority, enabled)
SELECT cc, `pp1`.`pricing_id`, `pp1`.`pid`, `pp1`.`title`, `pp1`.`startdate`, `pp1`.`enddate`, `pp1`.`priority`, `pp1`.`enabled`
FROM product_pricing pp1
WHERE pp1.pp_id = NEW.pp_id
ON DUPLICATE KEY UPDATE pp2.pp_id=(SELECT newppid := pp2.pp_id);


我不确定这是否是cc部分吗?那是触发器中的声明变量,但是它应该起作用,因为您应该能够执行SELECT'hello',t.col1 FROM table t

关于错误的任何建议都可以得到很大的好评。

最佳答案

INSERT syntax不允许使用别名。

INSERT INTO table [ ( column [, ...] ) ]
    { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }
    [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]

09-11 18:17