Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
Adaptive Server Enterprise 互換の方法で、データベース内に新しいトリガーを作成します。
CREATE TRIGGER [owner.]trigger_name ON [owner.]table_name FOR { INSERT, UPDATE, DELETE } AS statement-list
CREATE TRIGGER [owner.]trigger_name ON [owner.]table_name FOR {INSERT, UPDATE} AS [ IF UPDATE ( column-name ) [ { AND | OR } UPDATE ( column-name ) ] ... ] statement-list [ IF UPDATE ( column-name ) [ { AND | OR} UPDATE ( column-name ) ] ... ] statement-list
CREATE TRIGGER は、テーブルに対する排他的なテーブルロックを取得します。
削除または挿入されたローは、2 つの宣言されたテンポラリテーブル内に保持されます。Transact-SQL トリガーでは、Adaptive Server Enterprise の場合と同様に、テーブル名 "deleted"と "inserted" を使用してこれらのローにアクセスできます。Watcom-SQL CREATE TRIGGER 文では、REFERENCING 句を使用してこれらのローを参照します。
トリガー名はデータベース内でユニークでなければなりません。
Transact-SQL トリガーは、そのトリガーを起動した文が実行された後に実行されます。
Transact-SQL トリガーの作成時には ORDER 句がサポートされていないため、trigger_order の値は 1 に設定されます。SYSTRIGGER システムテーブルには、table_id、event、trigger_time、trigger_order というユニークなインデックスがあります。特定のイベント (挿入、更新、削除) では、文レベルのトリガーは常に AFTER であり、trigger_order は設定できません。このため、その他のトリガーで 1 以外の順序に設定されないことを前提として、テーブルごとに各タイプのいずれか 1 つのみを設定できます。
テーブルに対する DBA 権限、または RESOURCE 権限と ALTER パーミッション。
オートコミット。
SQL/2008 ベンダー拡張。
Transact-SQL ROW トリガーは、Adaptive Server Enterprise でサポートされていません。Transact-SQL の INSTEAD OF トリガーは、Adaptive Server Enterprise ではサポートされていますが、SQL Anywhere の Transact-SQL ダイアレクトではサポートされていません。