【发布时间】:2016-11-28 19:03:53
【问题描述】:
在 SQL Server 中多次运行 alter table alter column 语句是否有负面影响?
假设我像这样更改列的数据类型和可空性:
--create table
create table Table1
(
Column1 varchar(50) not null
)
go
--insert some records
insert into Table1 values('a')
insert into Table1 values('b')
go
--alter once
alter table Table1
alter column Column1 nvarchar(250) not null
go
--alter twice
alter table Table1
alter column Column1 nvarchar(250) not null
go
上面的一组 sql 都可以工作,我已经测试过了。我还可以测试 alter 语句中的属性。问题是说在更改之前检查列是否已经可以为空有什么好处。
在第一次更改之后,SQL Server 是否发现表已经被更改,因此第二次更改基本上什么都不做?
不同版本的 SQL Server 之间的处理方式是否存在差异?
谢谢, 伊利亚斯
【问题讨论】:
-
你试过了吗?发生什么了?此外,您可以事先检查您的列是否存在,或检查其他属性并有条件地执行更改语句。
-
我想不出有什么不同。您的语句必须是自包含在它们自己的 BATCH 中(即
GO语句)。例如,尝试添加一列并在同一批次中引用它。它会出错。 -
@Jeremy 我已经尝试过并按预期工作,我已经编辑了这个问题,希望能说清楚。谢谢。
标签: sql-server