簡體   English   中英

MySql,InnoDB和Null值

[英]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_afield_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM