我需要在超过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)
我应该在更改之前删除索引然后重新创建它们吗? 主键和外键怎么样?
通过我的研究和测试,我发现了......
我可以通过删除主键或任何索引来改变列的长度,但必须单独删除并重新创建外键。
这是正确的假设吗?我需要对此进行验证。
答案 0 :(得分:2)
是的,您应该只能修改列。根据我的经验,保留索引和主键的速度更快。
答案 1 :(得分:1)
您可能需要在外键表上更改列以增加大小。首先删除fk约束,然后修复forign kkey字段,然后修复主键字段,然后重新设置约束。