我在MySQL数据库中的两个表:“stock_pricing”和“DATA_IMPORT”MySql的触发INSERT ...对重复密钥更新不承认列
列第一表格:STOCK_ID
,DATE
,LAST_CLOSE_DOM_CURR
列第二表格:STOCK_ID
,DATE
,ADJ_CLOSE
第一个表格有一个关于stock_id和date的索引。这些被定义为UNIQUE。 第二个表根本没有索引。
第二个表有接收的数据。在此表上有一个BEFORE INSERT触发器,用于将传入数据插入到第一个表中。
如果在插入触发器上STOCK_ID和DATE的组合违反了第一个表的UNIQUE索引,触发器的ON DUPLICATE KEY UPDATE部分被触发。
我想尽组合,我能想到的,但触发不承认我的列名,有什么想法?非常感谢。
BEGIN
INSERT INTO stock_pricing (`STOCK_ID`, `DATE`, `LAST_CLOSE_DOM_CURR`)
VALUES (DATA_IMPORT.STOCK_ID, DATA_IMPORT.DATE, DATA_IMPORT.ADJ_CLOSE)
ON DUPLICATE KEY UPDATE
stock_pricing.STOCK_ID= DATA_IMPORT.STOCK_ID, stock_pricing.DATE= DATA_IMPORT.DATE, stock_pricing.LAST_CLOSE_DOM_CURR= DATA_IMPORT.ADJ_CLOSE;
END
谢谢戈登。那里是唯一的钥匙。我发布的代码是我的完整代码,我从Mqsql参考手册中获得了我的领导地位。我已经试过你的代码,但仍然不幸仍然得到相同的响应:SQL错误(1054)未知列'ADJ_CLOSE'字段列表中'。 – Mark 2014-11-22 13:57:23
@ user3237164。 。 。这应该是'VALUES(LAST_CLOSE_DOM_CURR)',新表中列的名称。 – 2014-11-22 14:00:19
DATA_IMPORT.ADJ_CLOSE值输入到stock_pricing.LAST_CLOSE_DOM_CURR,LAST_CLOSE_DOM_CURR = VALUES(LAST_CLOSE_DOM_CURR)如何工作?为什么不是这样:LAST_CLOSE_DOM_CURR = VALUES(di.ADJ_CLOSE)?偶然也不起作用。我很困惑。是否因为在触发触发器的重复部分时,di.ADJ_CLOSE值已经传递给LAST_CLOSE_DOM_CURR值? – Mark 2014-11-22 14:18:26