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