我在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