IF之后执行了多少行?

时间:2018-01-12 10:07:49

标签: sql sql-server tsql

考虑这样的SQL脚本的一部分:

IF OBJECT_ID('dbo.tableName', 'U') IS NOT NULL
ALTER TABLE [dbo].[tableName]
DROP CONSTRAINT PK_tableName
DROP TABLE dbo.tableName

如果tableName存在,是否所有三行都被执行了?我的脚本的其余部分如何进一步向下(不包括在内 - 它创建了表格);有没有办法限制IF语句后执行的行数?我无法找到答案,因为这是一个非常模糊的搜索。

2 个答案:

答案 0 :(得分:5)

如下所示:

IF OBJECT_ID('dbo.tableName', 'U') IS NOT NULL
    BEGIN
        ALTER TABLE [dbo].[tableName]
        DROP CONSTRAINT PK_tableName;
        DROP TABLE dbo.tableName;
    END

如果您不使用BEGINEND阻止,则只会在IF条件下处理第一个sql语句,并且每次执行时都会执行最后一个sql语句运行它,如果tableName不存在,您将收到错误。

答案 1 :(得分:2)

仅执行第一个查询。如果超过1个,您需要BEGIN - END阻止。

相关问题