2018-07-14

[SQL Server] CREATE OR ALTER - New enhancements in SQL Server 2016 SP1



SQL Server 2016 (13.x) SP1 與 Azure SQL Database 開始支援 CREATE OR ALTER

  • 僅需 1 句 T-SQL,即可自動判斷是該 CREATE 或 ALTER 此 Stored Procedure。
  • 無需額外撰寫判斷式去檢查是否存在於 sys.objects 中。


CREATE OR ALTER 支援以下物件:

  • STORED PROCEDURES
  • FUNCTIONS
  • TRIGGERS
  • VIEWS



不受限於 COMPATIBILITY_LEVEL。




CREATE OR ALTER - New enhancements in SQL Server 2016 SP1




01. 僅需 1 句 T-SQL,即可自動判斷是該 CREATE 或 ALTER 此 Stored Procedure。


  • CREATE OR ALTER PROC
  • 無需額外撰寫判斷式去檢查是否存在於 sys.objects 中。
  • SQL Server 2016 (13.x) SP1 支援。


-- figure 01_CREATE OR ALTER PROC






02. 精簡的判斷式,但仍需額外再寫 CREATE PROC。


  • DROP PROCEDURE IF EXISTS
  • 無需增加判斷式去檢查是否存在於 sys.objects 中。
  • SQL Server 2016 (13.x) 支援。


-- figure 02_DROP PROCEDURE IF EXISTS





03. 額外撰寫判斷式去檢查是否存在於 sys.objects 中。SQL Server 2016 之前的語法。

-- figure 03_EXISTS_sys_objects



04. 綜合來看:


  • SQL Server 2016 (13.x) SP1 支援的 CREATE OR ALTER ,最為簡潔。


-- figure 04_Compare_All






CREATE OR ALTER 支援的物件


CREATE OR ALTER 支援以下物件:

  • STORED PROCEDURES
  • FUNCTIONS
  • TRIGGERS
  • VIEWS


01. CREATE OR ALTER PROC

-- figure 11_CREATE OR ALTER PROC




02. CREATE OR ALTER FUNCTION

-- figure 12_CREATE OR ALTER FUNCTION




03. CREATE OR ALTER VIEW


-- figure 13_CREATE OR ALTER VIEW




04. CREATE OR ALTER TRIGGER


-- figure 14_CREATE OR ALTER TRIGGER






Sample Code


20180714_CREATE OR ALTER
https://drive.google.com/drive/folders/0B9PQZW3M2F40OTk3YjI2NTEtNjUxZS00MjNjLWFkYWItMzg4ZDhhMGIwMTZl?usp=sharing





Reference

CREATE OR ALTER – another great language enhancement in SQL Server 2016 SP1
https://blogs.msdn.microsoft.com/sqlserverstorageengine/2016/11/17/create-or-alter-another-great-language-enhancement-in-sql-server-2016-sp1/

Update introduces CREATE OR ALTER Transact-SQL statement in SQL Server 2016
https://support.microsoft.com/en-us/help/3190548/update-introduces-create-or-alter-transact-sql-statement-in-sql-server

沒有留言:

張貼留言