更改列数据类型时保留SQL索引
我有一个smalldatetime列,我需要更改为一个datetime列.这将是安装过程的一部分,因此它不能是手动过程.不幸的是,该列有一些索引和一个非空的约束.索引是性能相关的,只需要使用新的数据类型即可保留.是否可以编写一个语句,允许我保留相关信息,同时仍然更改列数据类型?如果是这样,怎么办?
解决方法您无法使用索引,唯一约束,外键约束或检查约束将数据类型从smalldatetime更改为datetime.在更改类型之前,您必须将其全部删除.然后:alter table T alter column TestDate datetime not null 然后重新创建仍然适用的约束和索引. 一些不同的方法来生成下拉并创建: 1)如果您给所有索引和约束提供了明确的名称,那么您的安装程序可以在每个环境(dev,test,用户验收测试,性能测试等)中运行静态脚本. 要生成此显式脚本,您可以: 2)如果您没有为所有索引和约束提供明确的名称,那么您的安装程序将必须在数据字典中查询适当的名称,并使用动态SQL在alter column语句之前以正确的顺序运行drop,那么按照正确的顺序创建alter列之后. 如果您知道没有约束,并且只是索引,这将更简单. 可能有工具或图书馆已经知道如何做到这一点. 另外,如果这是打包的应用程序,您可能不会放心本地DBA没有添加索引. 注意:如果有唯一的约束,它将构建一个索引,您将无法使用DROP INDEX删除它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |