我需要更改 500 多个表中的列 column_length
的长度,并且这些表可能没有记录,范围从 10 条记录到 3 或 4 百万条记录。
- 该列可能只是普通列
CREATE TABLE test(column_length varchar(10))
- 该列可能包含非聚集索引。
CREATE TABLE test(column_length varchar(10))
CREATE UNIQUE NONCLUSTERED INDEX column_length_ind ON test (column_length)
- 该列可能包含
PRIMARY KEY
聚集索引
CREATE TABLE test(column_length varchar(10))
ALTER TABLE test ADD PRIMARY KEY CLUSTERED INDEX ON column_length
该列可能是复合主键
该列可能有外键引用
简而言之,column_length
列可以是任何内容。
我所需要的只是创建脚本来将column_length 的长度从varchar(10)
更改为varchar(50)
。我应该在更改之前删除索引然后重新创建它们吗?主键和外键呢?
通过我的研究和测试,我发现我可以在不删除主键或任何索引的情况下更改列的长度,但必须单独删除并重新创建外键。
这个假设正确吗?
最佳答案
是的,您应该能够修改列。根据我的经验,保留索引和主键会更快。
关于sql-server - 改变列长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/134058/