[Database][SQL Server] SQL Server 2016 新語法 - DROP IF EXISTS

熱門文章 (Popular Post)

Posted by : Duran Hsieh 2月 05, 2018

介紹

過去我們在撰寫 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/


Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Duran Hsieh @ Matsurigoto - Date A Live - Powered by Blogger - Designed by Johanes Djogan -