改变列长度

时间:2008-09-25 15:37:32

标签: sql-server

我需要在超过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))

alter table test在column_length上添加主键聚簇索引

4)该列可能是复合主键

5)该列可能具有外键引用

简而言之,column_length列可能是任何内容。

我需要的是创建脚本以将column_length的长度从varchar(10)更改为varchar(50)

我应该在更改之前删除索引然后重新创建它们吗? 主键和外键怎么样?

通过我的研究和测试,我发现了......

我可以通过删除主键或任何索引来改变列的长度,但必须单独删除并重新创建外键。

这是正确的假设吗?我需要对此进行验证。

2 个答案:

答案 0 :(得分:2)

是的,您应该只能修改列。根据我的经验,保留索引和主键的速度更快。

答案 1 :(得分:1)

您可能需要在外键表上更改列以增加大小。首先删除fk约束,然后修复forign kkey字段,然后修复主键字段,然后重新设置约束。