如何在SQL Server 2008中创建复合主键

时间:2010-10-13 09:36:21

标签: sql sql-server-2008

我想在SQL Server 2008中创建表,但我不知道如何创建复合主键。我怎样才能做到这一点?

8 个答案:

答案 0 :(得分:218)

create table my_table (
     column_a integer not null,
     column_b integer not null,
     column_c varchar(50),
     primary key (column_a, column_b)
);

答案 1 :(得分:152)

CREATE TABLE UserGroup
(
  [User_Id] INT NOT NULL,
  [Group_Id] INT NOT NULL

  CONSTRAINT PK_UserGroup PRIMARY KEY NONCLUSTERED ([User_Id], [Group_Id])
)

答案 2 :(得分:45)

通过企业管理器(SSMS)......

  • 右键单击要创建复合键的表格,然后选择设计
  • 突出显示要作为复合键形成的列
  • 右键单击这些列并设置主键

要查看SQL,您可以右键单击Table> Script Table As> Create To

答案 3 :(得分:24)

我知道我已经迟到了这个派对,但对于现有的桌子,请尝试:

ALTER table TABLE_NAME
ADD CONSTRAINT [name of your PK, e.g. PK_TableName] PRIMARY KEY CLUSTERED (column1, column2, etc.)

答案 4 :(得分:20)

对于MSSQL Server 2012

CREATE TABLE usrgroup(
  usr_id int FOREIGN KEY REFERENCES users(id),
  grp_id int FOREIGN KEY REFERENCES groups(id),

  PRIMARY KEY (usr_id, grp_id)
)

<强>更新

我应该添加!

如果要更改这些外键/主键,首先应使用约束创建,否则无法进行更改。如下所示;

CREATE TABLE usrgroup(
  usr_id int,
  grp_id int,

  CONSTRAINT FK_usrgroup_usrid FOREIGN KEY (usr_id) REFERENCES users(id),
  CONSTRAINT FK_usrgroup_groupid FOREIGN KEY (grp_id) REFERENCES groups(id),

  CONSTRAINT PK_usrgroup PRIMARY KEY (usr_id,grp_id)
)

实际上,最后一种方式更健康,更连续。您可以查看FK / PK约束名称​​(dbo.dbname&gt; Keys&gt; ..)但是如果不使用约束,MSSQL会自动创建随机FK / PK名称。您需要查看所需的每个更改(更改表)。

我建议您为自己设置一个标准,并且应该根据您的标准定义约束。你不必记住,你不必考虑太久。简而言之,你工作得更快。

答案 5 :(得分:1)

首先创建数据库和表,手动添加列。在哪个列中成为主键。您应该右键单击此列并设置主键并设置主键的种子值。

答案 6 :(得分:-3)

在表格

上创建复合唯一键
ALTER TABLE [TableName] ADD UNIQUE ([Column1], [Column2], [column3]);

答案 7 :(得分:-3)

CREATE TABLE UserGroup
(
  [User_Id] INT Foreign Key,
  [Group_Id] INT foreign key,

 PRIMARY KEY ([User_Id], [Group_Id])
)