我需要做一個多重插入語句,我需要防止重複行而不使用主鍵或任何其他唯一索引。要插入的行需要檢查兩個(或更多)列是否相等,如果所有列至少與表中的一行匹配,則阻止插入。理想的解決方案是隻使用一個MySQL插入語句。MySQL - 防止重複的多個插入語句,而不使用唯一的索引
例如,有一個行已經插入表:
INSERT INTO `table1` (`a`, `b`, `c`)
VALUES ('1', '2', 'foo');
這是一個仍需要插入的數據:
INSERT INTO `table1` (`a`, `b`, `c`)
VALUES ('A', 'B', 'C'), ('1', '2', 'bar'), ('D', 'E', 'F');
你如何檢查列a和b ('A','B','C')和('D','E','F')同時插入('1','2','bar')插入嗎?
不(1,3,吧)碰撞(1,2,富)?怎麼樣(2,2,酒吧)?您用於確定重複行的準確條件是什麼? – 2014-09-22 16:40:27
詢問如何在不使用索引的情況下防止RDMS中的重複行有點像是說:「我需要將我的車開到紐約,它有一個爆胎,我不想修理它,所以什麼是最好的如果我在我的車輪上開車,去紐約的路線?「 – 2014-09-22 16:42:15
@Ollie Jones我完全同意。我現在唯一的解決方案是在列上創建唯一的索引,並在插入中使用'ON DUPLICATE KEY'。我的問題是,我無法確認這些列是否應始終是唯一的,因爲其數據/代碼我沒有自己寫。 – Siphon 2014-09-22 16:50:00