【问题标题】:Alter a column length更改列长度
【发布时间】:2008-09-25 15:37:31
【问题描述】:

我需要在 500 多个表中更改列 column_length 的长度,并且这些表可能没有从 10 条记录到 3 或 400 万条记录的记录。

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)

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

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

我可以只更改列的长度而不删除主键或任何索引,但必须单独删除并重新创建外键。

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

【问题讨论】:

    标签: sql-server


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-19
        • 2012-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-18
        相关资源
        最近更新 更多