从选择插入失败,出现奇怪的错误

时间:2019-08-26 00:10:46

标签: mysql triggers

我有一个插入后触发器,它将从选择中获取数据,这将返回错误

列数与第1行SQL1.sql 1 1的值计数不匹配

尝试手动运行-结果相同

Instant

我希望它能起作用,但似乎认为存在列错误。 请注意,这有时可能找不到任何选择,这是可以的,在这种情况下,我希望它继续运行,空记录集会成为问题吗?

1 个答案:

答案 0 :(得分:0)

参考:MySQL Insert...Select Syntax

  • Insert..Select中,请勿使用VALUES关键字。
  • 不要将select语句放在括号中。
INSERT INTO stkmonth (MONTH, YEAR, LOCATION, ATTRIB1, ATTRIB2, ATTRIB3, QTY_ONHAND, COST)
SELECT 
    MONTH(new.TRANS_DATE) AS MONTH, 
    YEAR(new.TRANS_DATE) AS YEAR,
    new.location AS location, 
    stock.ATTRIB1, 
    stock.ATTRIB2, 
    stock.ATTRIB3, 
    SUM(stocklvl.QTY_ONHAND) AS qty_onhand, 
    SUM(stocklvl.QTY_ONHAND * stocklvl.AVG_COST) AS cost
FROM sales
INNER JOIN stocklvl ON sales.ISC_CODE = stocklvl.ISC_CODE
INNER JOIN stock ON sales.ISC_CODE = stock.ISC_CODE
WHERE stock.ISC_CODE = new.isc_code
GROUP BY stocklvl.ISC_CODE
ON DUPLICATE KEY UPDATE qty_onhand = qty_onhand - new.qty, cost = (new.qty * new.cost);