導入

SQL Server のトリガー構築と最適化

Florin Angelescu

Instructor

トリガーとは?

  • 特殊な種類のストアドプロシージャ
  • データベースサーバーでイベント発生時に実行

トリガーの動作

SQL Server のトリガー構築と最適化

トリガーの種類(T-SQL コマンド別)

  • DML(データ操作言語)トリガー
    • INSERT、UPDATE、DELETE 文
  • DDL(データ定義言語)トリガー
    • CREATE、ALTER、DROP 文
  • ログオン トリガー
    • LOGON イベント
SQL Server のトリガー構築と最適化

トリガーの種類(動作別)

  • AFTER トリガー

    • 元の文が実行される
    • 追加の文が起動される
  • ユースケース例

    • 大量挿入後にインデックスを再構築
    • 更新時に管理者へ通知
SQL Server のトリガー構築と最適化

トリガーの種類(動作別)

  • INSTEAD OF トリガー

    • 元の文の実行を抑止
    • 代替の文を実行
  • ユースケース例

    • 挿入を禁止
    • 更新を禁止
    • 削除を禁止
    • オブジェクト変更を禁止
    • 管理者へ通知
SQL Server のトリガー構築と最適化

トリガー定義(AFTER)

-- 説明的な名前でトリガーを作成
CREATE TRIGGER ProductsTrigger

-- トリガーをテーブルに関連付け ON Products
-- トリガーの動作タイプ AFTER INSERT
-- トリガー処理の開始 AS
-- トリガーが実行するアクション PRINT ('Products テーブルにデータが挿入されました。');
SQL Server のトリガー構築と最適化

トリガー定義(INSTEAD OF)

-- 説明的な名前でトリガーを作成
CREATE TRIGGER PreventDeleteFromOrders
-- トリガーをテーブルに関連付け
ON Orders
-- トリガーの動作タイプ
INSTEAD OF DELETE
-- トリガー処理の開始
AS
-- トリガーが実行するアクション
PRINT ('Orders テーブルからの削除は許可されていません。');
SQL Server のトリガー構築と最適化

AFTER と INSTEAD OF の違い

CREATE TRIGGER MyFirstAfterTrigger
ON Table1
-- 発火イベント(UPDATE)の後に実行
AFTER UPDATE
AS
{trigger_actions_section};
CREATE TRIGGER MyFirstInsteadOfTrigger
ON Table2
-- 発火イベント(UPDATE)の代わりに実行
INSTEAD OF UPDATE
AS
{trigger_actions_section};
SQL Server のトリガー構築と最適化

演習に進みましょう!

SQL Server のトリガー構築と最適化

Preparing Video For Download...