2010-06-10 30 views
2

我有一個帶有幾個字段的分區表InnoDB。 我試圖避免重複插入。用INSERT IGNORE和NULL值在Mysql中插入記錄

比方說:

Field1 int null 
Field2 int null 
Field3 int null 
Field4 int null 
Field5 int null 

我已經創建了這些領域的唯一索引。 我嘗試插入一些帶NULL值的記錄,然後嘗試在MySql上用IGNORE功能重新插入它們。

不幸的是,它似乎在使用NULL值時複製記錄。 如果我嘗試使用零而不是NULL情況下一切正常,但我確實需要那裏的空值。

任何想法?

+0

請將答案標爲正確。 a1ex07的答案幫助我解決了類似的問題。 – 2015-02-09 12:14:23

回答

5

這是NULL如何工作。請記住,兩個NULL值的相等比較的結果是NULL(在邏輯表達式中計算結果爲FALSE)。因此,即使對列Field1有一個允許NULL值的唯一約束,該表也可以有多個記錄,其中Field1的值爲NULL。如果你想以不同的方式處理NULL,除了唯一的約束之外,你需要編寫BEFORE INSERT/UPDATE觸發器來檢查表中是否有記錄,並且引發一個錯誤以防止更新。

+0

因此,如果我這樣做,那麼RAISE ERROR將忽略只有記錄,我的完整插入將被忽略?有沒有辦法只忽略那條記錄?謝謝! – Homer1980ar 2010-06-13 18:12:40

+0

此答案應標記爲正確。 – 2015-02-09 12:12:54