更改列长
时间:2020-03-06 14:43:41 来源:igfitidea点击:
我需要在500多个表中更改`column_length'列的长度,并且这些表可能没有记录,从10条记录到3或者4百万条记录。
1)该列可能只是普通列
create table test(column_length varchar(10))
2)该列上可能包含非聚集索引。
create table test(column_length varchar(10)) CREATE UNIQUE NONCLUSTERED INDEX column_length_ind ON test (column_length)
3)该列上可能包含" PRIMARY KEY"聚簇索引
创建表测试(column_length varchar(10))
更改表测试在column_length上添加主键聚集索引
4)该列可能是复合主键
5)该列可能具有外键引用
简而言之,column_length列可以是任何东西。
我需要做的就是创建脚本以将column_length的长度从varchar(10)更改为varchar(50)。
我应该在更改之前删除索引然后重新创建它们吗?
主键和外键呢?
通过研究和测试,我发现...
我可以更改列的长度,而不必删除主键或者任何索引,但必须删除并重新创建外键。
这是正确的假设吗?我需要对此进行验证。
解决方案
是的,我们应该只可以修改列。根据我的经验,将索引和主键保留在适当的位置会更快。
我们可能还需要在外键表上做alter column来增加大小。因此,首先删除fk约束,然后修复外来kkey字段,然后修复主键字段,然后放回约束。