更改列长

时间: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字段,然后修复主键字段,然后放回约束。