sqlserver中修改具有外键的列的SQL?

shuiwencai 2013-07-16 04:26:31
两张表:主表A,Table1,其中,主表A和Table1之间是主从关系的表,两个表之间通过外键“统一编号”
实现级联更新和删除,现在,我想修改主表A的统一编号列,比如,由nvarchar(18)改为nvarchar(20).
这时候提示修改统一编号列失败!具体语句如下:
alter table 主表A alter column 统一编号 nvarchar(20)
但此时我又不想将关联关系删除后再建立,因为涉及表关联很多,能够有语句可以实现?而在企业管理器里可以直接修改,仅有一个提示都全部修改完成,有没有高手知道如何修改?建表与关系语句如下:


CREATE TABLE [dbo].[TABLE1] (
[统一编号] [nvarchar] (18) NOT NULL ,
[bb] [char] (10) NULL ,
[cc] [char] (10) NULL ,
[cd] [char] (10) NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[主表A] (
[统一编号] [nvarchar] (18) NOT NULL ,
[CC] [nvarchar] (50) NULL
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[TABLE1] ADD
CONSTRAINT [PK_TABLE1] PRIMARY KEY CLUSTERED
(
[统一编号]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[主表A] ADD
CONSTRAINT [PK_tempt] PRIMARY KEY CLUSTERED
(
[统一编号]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[TABLE1] ADD
CONSTRAINT [FK_主表A] FOREIGN KEY
(
[统一编号]
) REFERENCES [dbo].[主表A] (
[统一编号]
) ON DELETE CASCADE ON UPDATE CASCADE
GO
...全文
321 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuiwencai 2013-07-17
  • 打赏
  • 举报
回复
也许楼上说的对,不过也许有人有更好的方法,
hujiiori 2013-07-16
  • 打赏
  • 举报
回复
我跟踪了一下sql server management studio设计器修改后的做法,有一大堆sql,比删除掉外键更复杂,基本上的逻辑是保存数据到临时表,然后删掉原表,再重建表,再复制数据到新表,所以楼主不要觉得管理器上可以直接修改,还是安心写脚本处理吧
shuiwencai 2013-07-16
  • 打赏
  • 举报
回复
我 是说现在要修改具有外键的列
shuiwencai 2013-07-16
  • 打赏
  • 举报
回复
楼上的,你没明白我意思,看清楚再发表感言
發糞塗牆 2013-07-16
  • 打赏
  • 举报
回复
有外键的话直接级联更新就可以拉,我的博客有级联删除的例子:http://blog.csdn.net/dba_huangzj/article/details/8042999
shuiwencai 2013-07-16
  • 打赏
  • 举报
回复
有人指点下呗?

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧