考虑这样的SQL脚本的一部分:
IF OBJECT_ID('dbo.tableName', 'U') IS NOT NULL
ALTER TABLE [dbo].[tableName]
DROP CONSTRAINT PK_tableName
DROP TABLE dbo.tableName
如果tableName
存在,是否所有三行都被执行了?我的脚本的其余部分如何进一步向下(不包括在内 - 它创建了表格);有没有办法限制IF
语句后执行的行数?我无法找到答案,因为这是一个非常模糊的搜索。
答案 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
如果您不使用BEGIN
和END
阻止,则只会在IF
条件下处理第一个sql语句,并且每次执行时都会执行最后一个sql语句运行它,如果tableName
不存在,您将收到错误。
答案 1 :(得分:2)
仅执行第一个查询。如果超过1个,您需要BEGIN
- END
阻止。