繁体   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