介紹

過去我們在撰寫 SP 的過程時,通常都會加上物件判斷 (是否存在) 後再 drop 該物件,避免物件不存在情況而造成錯誤。過去要刪除某個資料表時,我們會這樣寫:
IF OBJECT_ID('dbo.Activity','U') IS NOT NULL
   DROP TABLE dbo.Activity
 OBJECT_ID 的第二個參數是 xtype,我們通常會加上 xtype 較為嚴謹

在 SQL Server 2016 後的版本,你可以透過下列語法進行:
 DROP TABLE IF EXISTS dbo.Inventory




另一個例子,我們要刪除一個 trigger (觸發器),可能會這樣寫:
IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'JobTrigger')

   DROP TRIGGER JobTrigger

在 SQL Server 2016 後的版本,你可以透過下列語法進行:
 DROP TRIGGER IF EXISTS JobTrigger


 DROP IF EXISTS 能操作的物件如下表:
AGGREGATE
SCHEMA
ASSEMBLY
SECURITY POLICY
DATABASE
SEQUENCE
DEFAULT
SYNONYM
INDEX
TABLE
PROCEDURE
TRIGGER
ROLE
TYPE
RULE
VIEW

參考資料

1. https://blogs.msdn.microsoft.com/sqlserverstorageengine/2015/11/03/drop-if-exists-new-thing-in-sql-server-2016/