SQL Server(T-SQL) CREATE OR ALTER

SQL Server 2016 SP1 にて導入されていた(らしい)、CREATE OR ALTER についての備忘録です。

CREATE OR ALTER

読んで字のごとく、未定義のDBオブジェクトに対してはCREATE文として、定義済みのDBオブジェクトに対してはALTER文として動作します。
ビュー、ストアドプロシージャ、ユーザー定義関数、トリガーに対して有効だそうです。
そもそもALTERばかりしているのでこの構文の存在に全く気が付きませんでした。

https://support.microsoft.com/ja-jp/help/3190548/update-introduces-create-or-alter-transact-sql-statement-in-sql-server

CREATE OR ALTER PROCEDURE [dbo].[uspProc1]
AS
BEGIN
  SET NOCOUNT ON;

  SELECT ...

END

それ以前で似たようなことをするとなると、こういう感じでしょうか。

IF OBJECT_ID('[dbo].[uspProc1]','P') IS NOT NULL 
  DROP PROCEDURE [dbo].[uspProc1]
GO

CREATE PROCEDURE [dbo].[uspProc1]
AS
BEGIN
  SET NOCOUNT ON;

  SELECT ...

END

DROP TABLE IF EXISTS

似たようなもので、DROP TABLE IF EXISTSがありますが、こちらは定義済みの場合はそのテーブルをDROPすることができます。
一時テーブルに対して使う時が多い気がします。

DROP TABLE IF EXISTS [dbo].[Sales];

CREATE TABLE [dbo].[Sales](
  ...
) ON [PRIMARY]
GO

それ以前であればこんな感じでしょうか。

IF OBJECT_ID('[dbo].[Sales]','U') IS NOT NULL 
  DROP TABLE[dbo].[Sales]
GO

CREATE TABLE [dbo].[Sales](
  ...
) ON [PRIMARY]