スポンサーリンク
SQL Server

CREATE OR ALTER が神すぎる!SQL Serverスクリプトが再実行可能になる魔法の構文

SQL SQL Server
この記事は約2分で読めます。

1. はじめに:そのIF EXISTS、もう卒業しませんか?

SQL Serverでビューやストアドプロシージャを更新するとき、毎回こんなコード書いてませんか?

IF EXISTS (SELECT * FROM sys.views WHERE name = '社員ビュー')
    DROP VIEW dbo.社員ビュー;

CREATE VIEW dbo.社員ビュー AS
SELECT 社員ID, 氏名 FROM dbo.社員;

安全だけど、DROPの瞬間に依存関係でエラーになったり、スクリプトが長くて読みにくいのが悩みどころ…。

2. CREATE OR ALTER とは?

SQL Server 2016 SP1 以降で使える構文で、以下のオブジェクトに対応しています:

オブジェクト対応
VIEW✅ OK
PROCEDURE✅ OK
FUNCTION✅ OK
TRIGGER✅ OK
TABLE❌ NG(使えません!)

3. Before → After:スクリプトがこう変わる!

Before(従来のIF EXISTSパターン):

IF EXISTS (SELECT * FROM sys.procedures WHERE name = '社員一覧取得')
    DROP PROCEDURE dbo.社員一覧取得;

CREATE PROCEDURE dbo.社員一覧取得 AS
SELECT * FROM dbo.社員;

After(CREATE OR ALTER):

CREATE OR ALTER PROCEDURE dbo.社員一覧取得 AS
SELECT * FROM dbo.社員;

再実行してもエラーなし! 依存関係も壊さない! スクリプトが短くて読みやすい!

テーブルには使えないので注意!

4. テーブルには使えないので注意!

-- これはエラーになります!
CREATE OR ALTER TABLE dbo.社員 (
    社員ID INT PRIMARY KEY
);

テーブルの場合は、従来通り IF NOT EXISTS + CREATEALTER を使い分けましょう。

5. まとめ:再実行可能なスクリプトで運用が変わる!

  • CREATE OR ALTER は現場の味方!
  • デプロイ・マイグレーションがシンプルに
  • テーブル以外はこれでOK!

コメント

タイトルとURLをコピーしました