sqlserver数据库修改主键类型

现在数据库是自增长的主键,比如要修改主键为字符串类型的,但是表里数据相互有主外建的关系,有什么方法可以修改?... 现在数据库是 自增长的主键,比如要修改主键为字符串类型的,但是表里数据相互有主外建的关系,有什么方法可以修改? 展开
 我来答
wangminghang4
推荐于2018-05-09
知道答主
回答量:31
采纳率:0%
帮助的人:6.6万
展开全部
要是这个表的主键是另一个表的外键的话,两个都需要改,改成相同的,先改外键的那个表
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创作者dfmhnqDnKx
2014-07-09 · TA获得超过674个赞
知道小有建树答主
回答量:503
采纳率:0%
帮助的人:91.6万
展开全部
主键的要求是不能为空,不能存在两行值相同,只要你修改后的值不与别的行的值相同,可以修改。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e35a809
2014-07-09 · 超过75用户采纳过TA的回答
知道小有建树答主
回答量:250
采纳率:100%
帮助的人:131万
展开全部
选择表,右键点击 修改 ,选择标识列,在下面的列属性中,把标识范围中 是标识 改成否,然后修改
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
圣鸾OJ
2015-09-10 · TA获得超过1629个赞
知道小有建树答主
回答量:1136
采纳率:96%
帮助的人:112万
展开全部
如果每次要更新多行,那必须还要有一个唯一索引来定位要修改的记录,比如为Col_Uq,那可以如下写触发器:
create trigger tri_update_tb_1_pk
on tb_1
for update
as
if not update(col_pk)
return

update tb_2
set col_pk=i.col_pk from tb_2,inserted i,deleted d
where tb_2.col_pk=d.col_pk
and i.Col_Uq=d.Col_Uq
go

如果保证每次只更新一行,那可以如下写触发器:

create trigger tri_update_tb_1_pk
on tb_1
for update
as
if not update(col_pk)
return

if (select count(*) from inserted)> 1
return

update tb_2
set col_pk=i.col_pk from tb_2,inserted i,deleted d
where tb_2.col_pk=d.col_pk
go
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式