2012-04-05 17 views
3

我有一個MySQL表看起來像這樣:我可以使用多個字段作爲IGNORE限定符在MySQL中進行INSERT IGNORE嗎?

`id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
`company_id` int(8) unsigned NOT NULL, 
`term_type` varchar(255) NOT NULL DEFAULT '', 
`term` varchar(255) NOT NULL DEFAULT '', 

我希望能夠做到這一點...

INSERT IGNORE INTO table (company_id, term_type, term) 
VALUES(a_company_id, 'a_term_type', 'a_term') 

...但我想插入是如果company_id,term_type和term的組合已存在,則忽略它們。我知道,如果我在嘗試插入重複值時在單個字段上具有唯一索引,則插入操作將被忽略。有沒有辦法做我嘗試的組合?我可以使用多列索引嗎?

我試圖避免做一個SELECT在每次插入之前檢查這個組合。正在處理數億行數據到這個表中。

回答

4

如果使用IGNORE關鍵字,則執行INSERT語句時發生的錯誤將被視爲警告。例如,如果沒有IGNORE,表中重複表中現有UNIQUE索引或PRIMARY KEY值的行會導致重複鍵錯誤,並且語句會中止。使用IGNORE時,該行仍未插入,但未發出錯誤。

所以,如果你有一個多列主鍵 - 它的作品。

3

也許是這樣的:

ALTER TABLE table ADD UNIQUE (company_id, term_type,term); 
相關問題