1. はじめに
- SQL Serverでトリガーを作成する時に躓いたことをメモしておきます
2. 開発環境
- SQL Server 2022
- Windows 11
3. SET ANSI_NULLS ON
- ANSI_NULLS が ON に設定されていると、NULL 値に対するすべての比較は UNKNOWN に評価されます。
- 一般的にはONにするようですが、OFFでトリガーを作っていました。
3. SET QUOTED_IDENTIFIER ON
- SQLを識別子は二重引用符 ("") で区切ることができます。
- 一般的にはONにするようですが、設定があることをしらず二重引用符 ("") は使っていませんでした。
SELECT "id",
"name"
FROM
"table";
4. CREATE OR ALTER
- 未定義のDBオブジェクトに対してはCREATE文として、定義済みのDBオブジェクトに対してはALTER文として動作します。
- SQL Server 2016 Service Pack 1以降で利用可能のようです。
- トリガーを更新する時に毎回DROPしてCREATEしていましたが、これで解決しました。
CREATE OR ALTER PROCEDURE [dbo].[テーブル名]
AS
BEGIN
(省略)
END
GO
5. ALTER TABLE [テーブル名] ENABLE/DISABLE TRIGGER
- あるテーブルの特定のトリガーの有効化(enable)/無効化(disable)します。
- トリガーの状態を変更する方法がわかっていませんでした。
-- トリガーを有効化する場合
ALTER TABLE [テーブル名] ENABLE TRIGGER [トリガー名];
-- トリガーを無効化する場合
ALTER TABLE [テーブル名] DISABLE TRIGGER [トリガー名];
6. 参考文献