[英]MySql, InnoDB & Null Values
以前我使用MyISAM存儲引擎用於MySql,我已經定義了三個字段的組合是唯一的。
現在我已經切換到InnoDB,我認為這導致了這個問題,現在是NULL!= NULL。
所以對於下表:
ID (Auto) | Field_A | Field_B | Field_C
我可以無限多次插入(Field_A,Field_B,Field_C)值(1,2,NULL)(1,2,NULL)(1,2,NULL)。
我該如何防止這種行為?
取決於業務規則,但第一個想法是將field_a
和field_b
設置為表的主鍵。 AUTO_INCREMENT列可用於非主鍵列,但鍵屬性必須與auto_increment列關聯:
CREATE TABLE your_table (
ID int auto_increment not null,
Field_A VARCHAR(45),
Field_B VARCHAR(45),
Field_C VARCHAR(45),
key(ID), --without this, you'll get MySQL ERROR #1075
primary key(field_a, field_b)
);
另一種方法是添加一個唯一約束(MySQL將它們作為索引實現) :
CREATE UNIQUE INDEX blah_ind USING BTREE ON your_table(field_a, field_b)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.