2013-04-08 98 views
0

我有這樣與MySQL多個唯一鍵上重複鍵參考

id,f1,f2,f3,f4 

ID的表結構是主鍵,F1和F3是唯一鍵

我的問題是,當我使用ON DUPLICATE KEY UPDATE

哪個鍵被它考慮估值

考慮查詢

INSERT INTO t1 (f1,f2,f4) VALUES (.....) ON DUPLICATE KEY UPDATE f4=...." 

如上所示,它會認爲關鍵是f1?或F3或ID

,如果我有一個像這樣

INSERT INTO t1 (f1,f2,f3,f4) VALUES (.....) ON DUPLICATE KEY UPDATE f4=...." 

查詢將它再考慮哪些關鍵?

謝謝你們:)

回答

1

MySQL manual,重點煤礦:

如果指定了對重複密鑰更新,和行插入該 會在唯一索引導致重複值或PRIMARY KEY, 執行舊行的UPDATE。

插入嘗試會導致表上的任何唯一約束的副本會導致觸發替代操作。需要注意的是,建議(一般)不使用ON DUPLICATE KEY語法與包含多個唯一索引的表:

在一般情況下,你應該儘量避免使用與表一對重複密鑰更新 條款多個唯一索引。

+0

有沒有優先權? – Anup 2013-04-08 22:08:51

+0

那麼任何違規行爲都會觸發替代行爲,所以優先權沒有多大意義。這就是說,直接的答案是afaik,不。 – Perception 2013-04-08 22:11:58

+1

如果一個表有多個唯一索引,並且您想使用ON DUPLICATE KEY UPDATE(僅在其中一個鍵上),您有什麼建議嗎? – theyuv 2016-04-04 10:29:57