データベーストリガは、に対するイベントに反応して自動的に実行される操作を意味する。トリガはデータ操作言語によるデータ状態の管理を自動化するために用いられる。トリガを利用することで、データ操作の限定、操作の記録、変更操作の監査などを行うことができる。

トリガの種類

編集

トリガには大きく分けて「行トリガ」と「文トリガ」の2つの種類がある。

行トリガ
の中の影響を受けたそれぞれに対して実行される。変更前または変更後の行は OLD, NEW という擬似的な行変数を使って読み取ることができる。
文トリガ
INSERT, UPDATE, DELETE 文に対して一度だけ実行される。

また、トリガは以下の属性を持つ。

"BEFORE" または "AFTER"
トリガが実行されるタイミングを指定する。
"INSTEAD OF"
トリガを元の文の代わりに実行する。
"WHEN"
トリガを起動する条件式を指定する。

一般的に、トリガは以下の3つのイベントにより起動される。トリガでは SELECT 文によるデータ取得に影響を及ぼすことはできない。

  • INSERT (新しい行の挿入)
  • UPDATE (既存の行の変更) / UPDATE OF (既存の行の特定の列の変更)
  • DELETE (既存の行の削除)

Oracle のトリガ

編集

Oracle Database では標準のトリガの他、Oracle 9i にて「スキーマレベルトリガ」と呼ばれる、スキーマの変更やユーザのログイン/ログオフに対するトリガが追加された。

  • INSERT
  • UPDATE
  • DELETE
  • AFTER CREATE
  • BEFORE/AFTER ALTER
  • BEFORE/AFTER DROP
  • BEFORE LOGOFF / AFTER LOGON

Microsoft SQL Server のトリガ

編集

Microsoft SQL Server では標準のトリガの他、ビューに対して INSTEAD OF トリガを定義できる。また、Microsoft SQL Server 2005 にて データ定義言語 (DDL) トリガが追加された。 Microsoft SQL ServerのDDLトリガーで利用可能な全ての発動イベントのリストは、Microsoft Docsで入手可能である。[1]

PostgreSQL のトリガ

編集

PostgreSQL はバージョン 6.2 (1997年) から標準トリガがサポートされている。さらにバージョン 8.4 で TRUNCATE イベント、9.0 で UPDATE OF, WHEN 句をサポートした。

  • INSERT
  • UPDATE / UPDATE OF
  • DELETE
  • TRUNCATE

10.0 で REFERENCING TABLE 句をサポートした。

11.0 で EXECUTE FUNCTION 句をサポートした。

14.0 で OR REPLACE 句をサポートした。

トリガにて実行される処理は直接記述せず、関数として与える。[2]

文法:

CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }
    ON table [ FOR [ EACH ] { ROW | STATEMENT } ]
    [ WHEN (...) ] EXECUTE PROCEDURE funcname ( arguments )

MySQL のトリガ

編集

MySQL はバージョン 5.0.2 にて標準トリガがサポートされた。

  • INSERT
  • UPDATE
  • DELETE

文法:

CREATE TRIGGER salary_trigger
    BEFORE UPDATE ON employee_table
    REFERENCING NEW ROW AS n, OLD ROW AS o
    FOR EACH ROW
    IF n.salary <> o.salary THEN
       ...
    END IF;

SQLite のトリガ

編集

SQLite は、文トリガーではなく、行トリガーのみをサポートする。 SQLite ではサポートされていない更新可能なビューは、INSTEAD OF トリガーを使用してエミュレートできる。

文法:

CREATE [TEMP | TEMPORARY] TRIGGER [IF NOT EXISTS][database_name .] trigger_name
[BEFORE | AFTER | INSTEAD OF] {DELETE | INSERT | UPDATE  [OF column_name [, column_name]...]}
ON {table_name | view_name}
   [FOR EACH ROW] [WHEN condition is mandatory ]
BEGIN
   ...
END

脚注

編集
  1. ^ DDLイベント - SQL Server”. 2025年1月3日閲覧。
  2. ^ PostgreSQL: Documentation: 17: CREATE TRIGGER”. 2025年2月20日閲覧。

外部リンク

編集

📚 Artikel Terkait di Wikipedia

プレジデンツトロフィー

延長戦勝ちとシュートアウト勝ちを除く勝ち数がより多い (RW : Regulation Wins) 3. シュートアウト勝利を除く勝ち数がより多い (ROW : Regulation plus Overtime Wins) 4. 総勝利数がより多い (W : Wins) 5.

ニール・パトリック・ハリス

2010年には代理母を通じて双子をもうけた。 2014年デイヴィッド・バーカと結婚したことを発表した。 俳優のフレディ・プリンゼ・Jr.は同じ高校の後輩である。 Saints Row 2 (2008年) - 声の出演。ベテラン・チャイルド役 Justice League The New Frontier (2008) - 声の出演

ブッカー・T (プロレスラー)

スティービー・レイ) LVPW LVPW・UWFヘビー級王座 : 1回 PWA PWAヘビー級王座 : 1回 TAP TAPヘビー級王座 : 1回 ROW ROWタッグ王座 : 1回 (w / スティービー・レイ) Can You Dig It? Rap Sheet Dead White Guys Sucka

ボラ・ミルティノビッチ

CONCACAFゴールドカップ:1回(1991) メキシコ代表 CONCACAFゴールドカップ:1回(1996) ^ a b c d e f g “Five in a row for the miracle worker”. BBC SPORT (2002年4月15日). 2014年12月14日閲覧。 ^ a b c

組 (データベース)

の集合からなるデータ構造のことである。 データベースにおける組においては、次のことが言える。 関係データベースのデータベース言語であるSQLでは、組とほぼ同じ意味で行 (row) という用語が使われている。 属性は、属性名と定義域 (ドメイン、型) の名称のペアである。 定義域は、データ型と同じ意味と考えてよい。

MySQL

1.30よりGA)。ベータ版は2005年11月にリリース。event scheduler, partitioning, plugin API, row-based replication, server log tables搭載。 2010年1月27日 - オラクルがサン・マイクロシステムズを買収。

ユブラジ・デッシィ

から例えられた。また、パグリは黒いものへ変更。 2014年6月、WWEから解雇となる。 WWE解雇後、2014年7月26日、テキサス州を拠点とするROW(Reality Of Wrestling)のSummer Of Championsに参戦。ジャスパー・デービスと対戦。最後にフルネルソンスラムを

ジャーマン・ダーツ・チャンピオンシップ

PartyPoker.net German Darts Championship - Day One (2007) PDC ^ Four In A Row For Taylor (2007) PDC ^ PartyPoker.net German Darts Championship Day One