SqlTriggerContext クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
発生したトリガーに関する文脈情報を提供します。
public ref class SqlTriggerContext sealed
public sealed class SqlTriggerContext
type SqlTriggerContext = class
Public NotInheritable Class SqlTriggerContext
- 継承
-
SqlTriggerContext
例
次の例は、アクションが SqlTriggerContext 発生したかどうかを判断するために使用されているオブジェクトを Insert 示しています。 のテーブルに user
行が挿入された場合、挿入された行からユーザー名と実際の名前が取得され、 UserNameAudit テーブルに追加されます。
[SqlTrigger(Name = @"UsersAudit", Target = "[dbo].[users]", Event = "FOR INSERT")]
public static void UsersAudit()
{
// Get the trigger context.
string userName;
string realName;
SqlCommand command;
SqlTriggerContext triggContext = SqlContext.TriggerContext;
SqlDataReader reader;
switch (triggContext.TriggerAction)
{
case TriggerAction.Insert:
// Retrieve the connection that the trigger is using.
using (SqlConnection connection
= new SqlConnection(@"context connection=true"))
{
connection.Open();
// Get the inserted row.
command = new SqlCommand(@"SELECT * FROM INSERTED;",
connection);
// Get the user name and real name of the inserted user.
reader = command.ExecuteReader();
reader.Read();
userName = (string)reader[0];
realName = (string)reader[1];
reader.Close();
// Insert the user name and real name into the auditing table.
command = new SqlCommand(@"INSERT [dbo].[UserNameAudit] (userName, realName) "
+ @"VALUES (@userName, @realName);", connection);
command.Parameters.Add(new SqlParameter("@userName", userName));
command.Parameters.Add(new SqlParameter("@realName", realName));
command.ExecuteNonQuery();
}
break;
}
}
<SqlTrigger(Name:="UsersAudit", Target:="[dbo].[users]", Event:="FOR INSERT")> _
Public Shared Sub UsersAudit()
Dim command As SqlCommand
Dim triggContext As SqlTriggerContext
Dim reader As SqlDataReader
Dim userName As String
Dim realName As String
' Get the trigger context.
triggContext = SqlContext.TriggerContext
Select Case triggContext.TriggerAction
Case TriggerAction.Insert
' Retrieve the connection that the trigger is using.
Using connection As New SqlConnection("context connection=true")
connection.Open()
' Get the inserted row.
command = new SqlCommand("SELECT * FROM INSERTED;", connection)
' Get the user name and real name of the inserted user.
reader = command.ExecuteReader()
reader.Read()
userName = CType(reader(0), String)
realName = CType(reader(1), String)
reader.Close()
' Insert the user name and real name into the auditing table.
command = New SqlCommand("INSERT [dbo].[UserNameAudit] (userName, realName) " & _
"VALUES (@userName, @realName);", connection)
command.Parameters.Add(new SqlParameter("@userName", userName))
command.Parameters.Add(new SqlParameter("@realName", realName))
command.ExecuteNonQuery()
End Using
End Select
End Sub
注釈
提供されるコンテキスト情報には、トリガーが起動する原因となったアクションの種類、UPDATE 操作で変更された列、およびデータ定義言語 (DDL) トリガーの場合は、トリガー操作を記述する XML EventData 構造体 ( Transact-SQL リファレンスを参照) が含まれます。
のインスタンス SqlTriggerContext は、 プロパティを SqlContext 介して TriggerContext トリガー内でコードが実行されている場合に、 クラスから使用できます。
プロパティ
ColumnCount |
トリガーにバインドされたデータ テーブルに含まれる列数を取得します。 このプロパティは読み取り専用です。 |
EventData |
トリガーの発生源となったアクションに固有のイベント データを取得します。 |
TriggerAction |
トリガーの発生源となったアクションを示します。 |
メソッド
IsUpdatedColumn(Int32) |
列が INSERT ステートメントまたは UPDATE ステートメントによって変更されていた場合、 |