SQL Server怎样用sql语句修改一个表中主键字段(它同时又是另一个表的外键及主键)的字段类型?

比如(数据库student):表S有一字段Sno,是表S的主键,int类型,notnull表Sc有一字段Sno,是表Sc的主键及外键(被参照表是S,被参照列是Sno),i... 比如(数据库student):
表S有一字段Sno,是表S的主键,int类型,not null
表Sc有一字段Sno,是表Sc的主键及外键(被参照表是S,被参照列是Sno),int类型,not null
现在想修改表S的字段Sno字段类型为char(10),应该怎样修改啊?
我试了下面的代码,但是提示有错误:
alter table S add Sno1 char(10) null;
set identity_insert S on;
update S set Sno1=Sno;
set identity_insert S off;
alter table S drop constraint PK_S;
alter table S drop column Sno;
exec sp_rename 'S.Sno1','Sno';
alter table S alter column Sno char(10) not null;
alter table S add constraint PK_S primary key(Sno);
第三行提示错误:对象名'S'无效,列名 'Sno1' 无效。
//update S set Sno1=Sno;
应该怎样修改呢?求代码...万分感谢
展开
 我来答
du瓶邪
推荐于2017-09-05 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2909万
展开全部
要修改主键和外键的话需要先指定主键和外键的名称,以后修改时要用到。
这是的主键和外键为:

修改的sql语句:
--修改主键的名称PK_myTest为PK_myTest22
alter table myTest drop constraint PK_myTest
alter table myTest add constraint PK_myTest22 primary key(aa)
--修改外键的名称fk_myTest为fk_myTest22
alter table myTest drop constraint fk_myTest
alter table myTest add constraint fk_myTest22 foreign key(bb) references test!
百度网友a67c6505a
2012-05-01 · TA获得超过832个赞
知道小有建树答主
回答量:728
采纳率:100%
帮助的人:473万
展开全部
先删除它们的外键关系,再分别修改2个表的字段类型,再建立外键关系
追问
应该怎样删除外键约束关系呢?还有,他们同时又是对应所在表的主键。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式