2012-12-15 45 views
0

我有一個表在兩列上有一個唯一的約束。我想用戶對重複鍵更新,但我得到一個錯誤......關於重複密鑰更新多個唯一約束

...創建表

CREATE TABLE IF NOT EXISTS `requests` (
    `userFrom` int(11) NOT NULL, 
    `userTo` int(11) NOT NULL, 
    `dateSent` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    UNIQUE KEY `userFrom` (`userFrom`,`userTo`) 
) 

...添加一些數據

INSERT INTO requests (userFrom, userTo) VALUES (1, 2) 

..然後這個失敗(當傳遞的2

INSERT INTO requests (userFrom, userTo) VALUES (:userFrom, :userTo) ON DUPLICATE KEY UPDATE set dateSent = NOW() 

錯誤的1 userFrom和用戶至是:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set dateSent = NOW()' at line 1 
+0

你的DB是存儲用戶的'INT'?爲什麼?常識意味着用戶將是一串字符。你的用戶是以數字形式存儲的?多麼奇怪。 – bobthyasian

+0

@bobthyasian這是一個FK。 – momo

+0

哦!好。良好的保持。 – bobthyasian

回答

3

我認爲沒有必要在這裏set關鍵字,試試這個

INSERT INTO requests (userFrom, userTo) VALUES (:userFrom, :userTo) ON DUPLICATE KEY UPDATE dateSent = NOW() 
+0

就是這樣,謝謝 – momo