首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQL表可以有多个具有主键的列吗?

SQL表可以有多个具有主键的列吗?
EN

Stack Overflow用户
提问于 2009-11-18 01:10:24
回答 3查看 78.6K关注 0票数 27

SQL表可以有多个具有主键的列吗?

EN

回答 3

Stack Overflow用户

发布于 2009-11-18 01:13:06

一个表可以只有一个主键约束,但它可以由几列组成,例如

代码语言:javascript
复制
create table my_table (col1 integer, col2 integer, col3 integer,
   primary key (col1, col2, col3)
   );

除了主键之外,表还可以有一个或多个唯一约束,例如

代码语言:javascript
复制
create table my_table2 (col1 integer, col2 integer, col3 integer,
   primary key (col1, col2),
   unique (col2, col3)
   );
票数 43
EN

Stack Overflow用户

发布于 2009-11-18 01:13:00

如果您询问一个表是否可以有多个列作为主键,那么对于MS SQL Server,答案是肯定的,这称为复合(更正)键。

票数 8
EN

Stack Overflow用户

发布于 2009-11-18 01:57:59

通常,组合键是一种糟糕的做法。当你需要加入它的时候,它会导致事情变慢。当您需要更新27个子表中的一个或多个字段时,这也比较困难。更好的做法是在通常构成组合键的字段上使用代理键和唯一索引。这样,您就拥有了整数连接的速度,并且保持了唯一属性,并且当键值发生变化时(就像在组合键中经常发生的那样),那么您只需要更改一个表,而不是所有的子表。

有一个地方,我将使用组合键和用于创建多对多关系的关系的映射表。在这种情况下,您通常只有两列,而且这两列通常都是整数,通常不会改变。然后,我将通常使用组合键,因为这种特殊情况没有在普通表中使用组合键的缺点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1750335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档