我想在SQL Server 2008中创建表,但我不知道如何创建复合主键。我怎样才能做到这一点?
答案 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])
)