重命名后无法更改列

时间:2015-02-25 10:34:40

标签: sql sql-server-2012

我首先检查列是否存在。如果没有,那么我重命名现有列,然后尝试更改其数据类型。但是当我运行脚本时,我得到错误Invalid column name Age

if Not exists(select * from sys.columns 
        where Name = 'Age' and Object_ID = Object_ID('TestTable'))
begin

EXEC sp_RENAME 'TestTable.Name' , 'Age', 'COLUMN'

ALTER TABLE TestTable ALTER COLUMN Age int

Update TestTable set Age = 0

ALTER TABLE TestTable ALTER COLUMN Age int Not Null

end

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

试试这个。将If条件与Not Existsexists分开。

if Not exists(select * from sys.columns 
        where Name = 'Age' and Object_ID = Object_ID('TestTable'))
BEGIN

EXEC sp_RENAME 'TestTable.Name' , 'Age', 'COLUMN'
END
GO

if exists(select * from sys.columns 
        where Name = 'Age' and Object_ID = Object_ID('TestTable'))
begin
ALTER TABLE TestTable ALTER COLUMN Age int

Update TestTable set Age = 0

ALTER TABLE TestTable ALTER COLUMN Age int Not Null
END
GO

修改


关于来自here

的SQL中的批处理
  

无法更改表,然后在中引用新列   同一批。

因此,在同一批次中重命名和更改不起作用。

See here

  

执行一批SQL语句时发生错误,

     
      
  • 批次中没有任何陈述被执行。
  •