怎样在SQL SERVER设置双主键或多个主键

为什么我用sqlserver建了一个表将几个字段一起设为主键后就无法为它们单独添加外键?我现在有一个学生表(学号),课程表(课程号),选课表(学号,课程号)在选课表里学号... 为什么我用sqlserver建了一个表将几个字段一起设为主键后就无法为它们单独添加外键?
我现在有一个学生表(学号),课程表(课程号),选课表(学号,课程号)
在选课表里学号,课程号是主键 要怎么给他们单独加外键关系?一个一个加会出错 一起加只能加一个表。。。
展开
 我来答
小孤阿9
2018-04-18 · TA获得超过2.8万个赞
知道小有建树答主
回答量:90
采纳率:100%
帮助的人:2.4万
展开全部

首先一个表是不能有两个主键的。但是可以有两个字段组合成一个主键,这就是为什么有时候表里为什么会有两个字段都有主键的标志,那是因为他们组合成了一个主键了。我们可以先删除了原来的主键再用类似下面SQL语句建立:

alter table 你的表名 add constraint pk_name primary key (字段1,字段2);

或者在表设计器里面按住ctrl选中要设置主键的两列再设置主键就OK了.

jelvis
推荐于2017-11-26 · TA获得超过5631个赞
知道大有可为答主
回答量:2480
采纳率:62%
帮助的人:980万
展开全部
你搞错了,选课表里学号、课程号都是外键,不是主键
更多追问追答
追问
学号、课程号都是外键没错   

但要把它们加一起弄成选课表的主键啊
学号、课程号都是外键没错   

但要把它们加一起弄成选课表的主键啊
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
仙逆哥
2014-08-11 · TA获得超过290个赞
知道答主
回答量:156
采纳率:0%
帮助的人:106万
展开全部
选课表
最好新建一个自己的主键,学号,课程号
作为外键
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风尘紫驿
2015-10-22 · TA获得超过416个赞
知道小有建树答主
回答量:201
采纳率:0%
帮助的人:196万
展开全部
创建复合主键:

方法一:创建表之后,alter table table_name add primary key(字段1,字段2)

方法二:CREATE TABLE 表名 (字段名1 Int Not Null,
字段名2 nvarchar(13) Not Null
字段名3…………
字段名N…………)
GO

ALTER TABLE 表名 WITH NOCHECK ADD
CONSTRAINT [PK_表名] PRIMARY KEY NONCLUSTERED
(
[字段名1],
[字段名2]
)
GO
参考资料:http://kb.cnblogs.com/page/69853/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式