1

我正在使用 MySQL 的工作台为数据库创建模式。我的一张表包含 personId 字段,以及国民身份证号码(如果有的话)(他们可能没有)。

personId 字段是整个架构中用作唯一标识符的字段,因此我为它勾选了“PK”和“NN”选项。现在,我希望能够确保系统不会允许具有不同 personId 的新插入,如果它与已经存在的实体具有相同的国家 ID。但是,国家 ID 不是主键,实际上可能为空。

我一直在查看“UQ”选项,但我找不到关于它实际作用的明确文档。我担心当我真正希望用户插入数字或将其保留为空时,它会自动创建数字。有人知道吗?

4

1 回答 1

2

UQ 将字段标记为唯一键。这会强制给定字段的唯一性,但 NULL 除外。这正是我的国民身份证字段所需要的。

http://dev.mysql.com/doc/refman/5.5/en/create-table.html

UNIQUE 索引创建一个约束,使得索引中的所有值都必须是不同的。如果您尝试使用与现有行匹配的键值添加新行,则会发生错误。对于所有引擎,UNIQUE 索引允许包含 NULL 的列有多个 NULL 值。

于 2012-05-03T04:23:19.820 回答