为什么我这不能处理alter table?
Begin Try
alter table nyork add [Qtr] varchar(20)
End Try
Begin Catch
Print 'Column already exist'
End Catch'发布于 2014-07-04 03:12:26
因为其中一个是transact sql命令( try catch),另一个是DDL语句。
在执行alter语句之前,最好先查询该列是否存在。
若要使用MSSQL执行此操作,请参见How to check if a column exists in a SQL Server table?
特别针对你的情况,
IF COL_LENGTH('nyork', 'Qtr') IS NULL
BEGIN
alter table nyork
add [Qtr] varchar(20)
END发布于 2014-07-04 03:35:32
你不能这样做。TRY...CATCH只能处理运行时错误。只要列不存在,脚本就会运行,而不是在列已经存在时运行。对象的名称解析是在编译时完成的。因此,SQL Server将始终在开始执行任何操作之前识别缺少的列。因此,您不能使用动态SQL也做这样的事情。
发布于 2021-04-09 14:06:18
你可以用exec来包装它(‘alter goes here')。那么catch就会接住
https://stackoverflow.com/questions/24561547
复制相似问题