首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Try Catch无法处理alter table

Try Catch无法处理alter table
EN

Stack Overflow用户
提问于 2014-07-04 03:08:17
回答 4查看 2.5K关注 0票数 0

为什么我这不能处理alter table?

代码语言:javascript
运行
复制
Begin Try
alter table nyork add [Qtr] varchar(20)
End Try
Begin Catch
Print 'Column already exist'
End Catch'
EN

回答 4

Stack Overflow用户

发布于 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?

特别针对你的情况,

代码语言:javascript
运行
复制
IF COL_LENGTH('nyork', 'Qtr') IS NULL
BEGIN
    alter table nyork
    add [Qtr] varchar(20)
END
票数 4
EN

Stack Overflow用户

发布于 2014-07-04 03:35:32

你不能这样做。TRY...CATCH只能处理运行时错误。只要列不存在,脚本就会运行,而不是在列已经存在时运行。对象的名称解析是在编译时完成的。因此,SQL Server将始终在开始执行任何操作之前识别缺少的列。因此,您不能使用动态SQL也做这样的事情。

票数 0
EN

Stack Overflow用户

发布于 2021-04-09 14:06:18

你可以用exec来包装它(‘alter goes here')。那么catch就会接住

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24561547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档