INSTEAD OF トリガー(DML)

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

Florin Angelescu

Instructor

定義と特性

  • 発火時に一連の処理を実行する
  • DML イベントの代わりに処理を実行
  • その DML イベント自体は実行されない
  • テーブルやビューの INSERT、UPDATE、DELETE で使用
SQL Server のトリガー構築と最適化

INSTEAD OF トリガーの前提条件

| ID  | 顧客              | 商品      | 価格  | 数量     | 注文日      | 合計金額     |
|-----|-------------------|-----------|-------|----------|-------------|--------------|
| 284 | VitaFruit         | Orange    | 0.76  | 75       | 2018-09-17  | 57.00        |
| 330 | Healthy Choices   | Raspberry | 1.96  | 200      | 2018-10-29  | 392.00       |
| 302 | World of Fruits   | Pineapple | 4.16  | 25       | 2018-10-09  | 104.00       |
| 248 | Fruit Mania       | Plum      | 1.11  | 300      | 2018-08-11  | 333.00       |
| 358 | Fruit Mag         | Pomelo    | 1.11  | 750      | 2018-11-29  | 832.50       |
| 100 | VitaFruit         | Avocado   | 2.91  | 500      | 2018-03-29  | 1455.00      |
SQL Server のトリガー構築と最適化

INSTEAD OF トリガーの前提条件

  • 対象テーブル
  • トリガーの説明
  • 発火イベント(DML)
  • トリガー名
  • Orders
  • 既存レコードの更新を禁止
  • UPDATE
  • PreventOrdersUpdate
SQL Server のトリガー構築と最適化

INSTEAD OF トリガーの定義

CREATE TRIGGER PreventOrdersUpdate

ON Orders
INSTEAD OF UPDATE
AS RAISERROR ('"Orders" テーブルでの更新は許可されていません。 新しい商品を追加するには新規注文を作成してください', 16, 1);
SQL Server のトリガー構築と最適化

練習しましょう!

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

Preparing Video For Download...