Try Catch 无法处理 alter table

Emm*_*gis 0 sql sql-server try-catch sql-server-2008

为什么我不能处理更改表?

Begin Try
alter table nyork add [Qtr] varchar(20)
End Try
Begin Catch
Print 'Column already exist'
End Catch'
Run Code Online (Sandbox Code Playgroud)

Lou*_*uis 5

因为其中一个是transact sql命令(try catch),另一个是DDL语句。

在执行 alter 语句之前,您最好先查询该列是否存在。

要使用 MSSQL 执行此操作,请参阅如何检查 SQL Server 表中是否存在列?

特别针对您的情况,

IF COL_LENGTH('nyork', 'Qtr') IS NULL
BEGIN
    alter table nyork
    add [Qtr] varchar(20)
END
Run Code Online (Sandbox Code Playgroud)