2011-02-17 35 views
0

我在想像這是一個簡單的問題,但我遇到了我認爲的語法問題。基於行中存在的兩個元素插入MySQL

我有一個表中有一個事件ID作爲主鍵(eventID),觸發事件的設備ID,以及事件觸發時間戳。我通過C#和命令行處理mySQL(5.1)元素

我的困境是我必須複製/導入數據庫到另一個數據庫,並且由於eventID是主鍵而導致重複條目,如果我的當前設備ID +時間戳組合尚不存在,那麼我想要做的只是插入到數據庫中

I'我發現了很多查詢的例子,但是它們要麼引發語法問題,要麼根本不需要工作。在僞代碼中,這就是我正在尋找的東西......

IF timestampToInsert EXISTS WHERE deviceIDtoInsert ALSO EXISTS ON SAME ROW 
    UPDATE ROW 
ELSE 
    INSERT INTO myTABLE (deviceID, timeStamp) VALUES (deviceIDtoInsert, timestampToInsert) 

回答

0

這聽起來像你想做一個「upsert」。

在MySQL中這被稱爲 「INSERT...ON DUPLICATE KEY UPDATE」:

INSERT INTO myTABLE (deviceID, timeStamp) 
VALUES (deviceIDtoInsert, timestampToInsert) 
ON DUPLICATE KEY UPDATE ... 

注意,如果你有(設備ID,時間戳)的唯一指標,這隻會工作