IF之后执行了多少行?

Syn*_*ror 5 sql t-sql sql-server

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

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

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

Md.*_*bir 5

如下所示:

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

如果你不使用BEGINEND阻塞,只会在IF条件下处理第一个sql语句,并且每次运行它时都会执行最后的sql语句,如果tableName不存在则会出错.