什么是更改表列的脚本?

时间:2011-11-07 21:41:33

标签: sql sql-server-2008

假设我有一个像Tab这样的表(col1 varchar(50),....)

然后我想将列col1更改为col1 varchar(100)。 SQL Server管理工作室为此任务生成脚本:

CREATE TABLE dbo.Tmp_Tab
    (
    Col1 varbinary(100) NULL
    )  ON [PRIMARY]
GO
ALTER TABLE dbo.Tmp_Tab SET (LOCK_ESCALATION = TABLE)
GO
IF EXISTS(SELECT * FROM dbo.Tab)
     EXEC('INSERT INTO dbo.Tmp_Tab (Col1)
        SELECT Col1 FROM dbo.Tab WITH (HOLDLOCK TABLOCKX)')
GO
DROP TABLE dbo.Tab
GO
EXECUTE sp_rename N'dbo.Tmp_Tab', N'Tab', 'OBJECT' 
GO

这太复杂了。任何像Alter表这样的简单脚本都会发生这种变化吗?

2 个答案:

答案 0 :(得分:1)

因为从varchar(50)更改为varchar(100)不需要任何数据转换,所以您可以这样做:

alter table Tab
alter column Col1 varchar(100) null;

答案 1 :(得分:0)

varbinary(50)varbinary(100)只是元数据更改

ALTER TABLE dbo.Tab ALTER COLUMN Col1 varbinary(100) NULL

同样适用于varchar(50)varchar(100)