繁体   English   中英

拥有多个主键表约束是错误的吗?

[英]Is it an error to have more than one primary key table constraint?

我对主键表约束有疑问。

在一个表定义中具有多个主键表约束是错误的吗?

create table "entity" (
  "id1" integer,
  "id2" integer,
  primary key ("id1"),
  primary key ("id2")
);

SQL BNF<table element list>定义为<column definiton><table constraint definition>的列表。 这并不限制每个表的primary key语句的数量。 因此,问题是:非自由SQL标准中是否还有其他地方定义了主键语句的限制?

还是上述定义的语义等同于组合的主键?

create table "entity" (
  "id1" integer,
  "id2" integer,
  primary key ("id1", "id2")
);

更新:

尽管BNF允许,但SQL Fiddle支持的RDBMS似乎不允许第一个示例。

Sqlite说:

错误:表“实体”具有多个主键

PostgreSQL说:

错误:不允许为表“实体”使用多个主键

甲骨文说:

ORA-02260:表只能有一个主键

MS SQL说:

无法向表“实体”添加多个PRIMARY KEY约束。

MySQL完全不符合标准。 因此不算在内。

一个表只能有一个primary key ,这就是为什么它被称为“主键”的原因(请注意,该键可以是复合键,即基于多个列)。

一些数据库允许您添加其他备用/候选密钥 大多数允许您将一列或一组列定义为unique ,这实际上与具有备用键相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM