宇宙仮面の C# プログラミング
   

Top

C# 2005

C# 2003

C# Windows Mobile

SQL Server 2005

SQL Server 2000

Virtual PC/Server

C# 研究室ブログ

C# ソフトウェア ダウンロード

C# 開発環境

宇宙仮面の C# プログラミングについて

.NET/C# eGroup JP

INETA Japan



Google
Web
uchukamen.com









トリガ

 

1.目次

1.目次
2.トリガの生成
3.トリガの変更
4.トリガの削除

.トリガの生成

トリガは特殊なクラスのストアド プロシージャであり、テーブルまたはビューに対して UPDATE、INSERT、または DELETE の各ステートメントが実行されたときに自動的に実行されます。
テーブルは複数のトリガを持つことができます。CREATE TRIGGER ステートメントを FOR UPDATE、FOR INSERT、または FOR DELETE の各句と共に定義し、特定のクラスのデータ修正操作によってトリガを起動できます。

FOR UPDATE を指定した場合、IF UPDATE (column_name) 句を使用して、特定の列に影響を及ぼす更新によってトリガを起動できます。
 

トリガを使用すると、会社での処理を自動化できます。在庫管理システムでは、更新トリガで在庫レベルが再発注点に到達したことを検出し、自動的に供給元への注文を生成できます。工場内の工程を記録するデータベースでは、工程が定義された安全限度を超えたときに、トリガによってオペレータに電子メールやポケットベルで通知できます。

次のトリガは、pubs データベース内に新しいタイトルが追加されると必ず電子メールを生成します。
 

CREATE TRIGGER reminder
ON titles
FOR INSERT
AS
EXEC master..xp_sendmail 'MaryM',
'New title, mention in the next report to distributors.'

トリガには、ストアド プロシージャとまったく同じように、Transact-SQL ステートメントが入っています。トリガはストアド プロシージャのように、そのトリガ内に SELECT ステートメントがあれば、そのステートメントで生成された結果セットを返します。トリガには、パラメータを書き込むだけのステートメント以外の SELECT ステートメントを含めないことをお勧めします。これは、ユーザーが UPDATE、INSERT、または DELETE の各ステートメントから返される結果セットを見ることがないからです。
FOR 句を使用して、いつトリガを実行するかを指定できます。
 

  • AFTER
    トリガは、そのトリガを起動したステートメントが完了した後に実行されます。そのステートメントが制約違反や構文エラーなどのエラーで終了した場合、トリガは実行されません。AFTER トリガはテーブルに対してのみ指定できます。ビューに対しては指定できません。個々のトリガ動作 (INSERT、UPDATE または DELETE) に対して複数の AFTER トリガを指定できます。1 つのテーブルに対して複数の AFTER トリガが指定されている場合は、sp_settriggerorder を使用して、どの AFTER トリガを最初に起動し、どの AFTER トリガを最後に起動するかを定義できます。最初と最後に起動される AFTER トリガ以外のすべての AFTER トリガが起動される順序は定義されず、この順序を制御することはできません。
    SQL Server 2000 では AFTER が既定の設定です。SQL Server Version 7.0 以前のバージョンでは、すべてのトリガが AFTER トリガとして動作したため、AFTER または INSTEAD OF を指定することはできませんでした。
     
  • INSTEAD OF
    トリガ動作の代わりにトリガが実行されます。INSTEAD OF トリガは、テーブルにもビューにも指定できます。個々のトリガ動作 (INSERT、UPDATE または DELETE) に対して 1 つの INSTEAD OF トリガのみを指定できます。INSTEAD OF トリガを使用して、INSERT ステートメントおよび UPDATE ステートメントから渡されるデータ値に対して拡張整合性チェックを実行することができます。INSTEAD OF トリガを使用すると、通常は更新をサポートしないビューを更新可能にする動作を指定することができます

.1 CREATE TRIGGER構文

CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{

    { { FOR | AFTER | INSTEAD OF }
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
        [ WITH APPEND ]
        [NOT FOR REPLICATION]
        AS
        [ { IF UPDATE ( column )
            [ { AND | OR } UPDATE ( column ) ]
                [ ...n ]
        | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
                { comparison_operator } column_bitmask [ ...n ]
        } ]
        
sql_statement [ ...n ]
    }
}

.トリガの変更

 

.1 ALTER TRIGGER構文

ALTER TRIGGER trigger_name
ON ( table | view )
[ WITH ENCRYPTION ]
{
    {
( FOR | AFTER | INSTEAD OF )
{ [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] }
        [NOT FOR REPLICATION]
        AS
        
sql_statement [ ...n ]
    }
    |
    {
( FOR | AFTER | INSTEAD OF )
{ [ INSERT ] [ , ] [ UPDATE ] }
        [NOT FOR REPLICATION]
        AS
        { IF UPDATE ( column )

        
[ { AND | OR } UPDATE ( column ) ]
        [ ...
n ]
        | IF
(
COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
        { comparison_operator } column_bitmask [ ...n ]
        }
        
sql_statement [ ...n ]
    }
}

.トリガの削除

DRIP TRIGGER TR_MYTRIGGER

.1 DROP TRIGGER構文

DROP TRIGGER { trigger } [ ,...n ]
このページを評価する

このページを評価する

悪い             良い
1 2 3 4 5
コメント(一言お願いします)