假设我有一个像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表这样的简单脚本都会发生这种变化吗?
答案 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)