SqlTriggerContext.TriggerAction 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指示激发触发器的操作。
public:
property Microsoft::SqlServer::Server::TriggerAction TriggerAction { Microsoft::SqlServer::Server::TriggerAction get(); };
public Microsoft.SqlServer.Server.TriggerAction TriggerAction { get; }
member this.TriggerAction : Microsoft.SqlServer.Server.TriggerAction
Public ReadOnly Property TriggerAction As TriggerAction
属性值
激发触发器的操作,形式为 TriggerAction。
示例
以下示例显示了一个审核触发器。 Insert如果发生 或 Delete 操作,将从 INSERTED 和 DELETED 表中检索受影响的行。
[SqlTrigger(Name = @"TableAudit", Target = "[dbo].[Users]", Event = "FOR INSERT, DELETE")]
public static void TableAudit()
{
SqlCommand command = new SqlCommand();
SqlTriggerContext triggContext = SqlContext.TriggerContext;
SqlDataReader reader;
switch (triggContext.TriggerAction)
{
// Insert.
case TriggerAction.Insert:
using (SqlConnection connection
= new SqlConnection(@"context connection=true"))
{
// Open the context connection.
connection.Open();
// Get the inserted row.
command = new SqlCommand(@"SELECT * FROM INSERTED;",
connection);
reader = command.ExecuteReader();
reader.Read();
// Retrieve data from inserted row.
reader.Close();
}
break;
// Delete.
case TriggerAction.Delete:
using (SqlConnection connection
= new SqlConnection(@"context connection=true"))
{
// Open the context connection.
connection.Open();
// Get the deleted rows.
command = new SqlCommand(@"SELECT * FROM DELETED;",
connection);
reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
// Retrieve data from deleted rows.
}
reader.Close();
}
else
{
// No rows affected.
}
}
break;
}
}
<SqlTrigger(Name:="TableAudit", Target:="[dbo].[Users]", Event:="FOR INSERT, DELETE")> _
Public Shared Sub TableAudit()
Dim command As SqlCommand
Dim triggContext As Microsoft.SqlServer.Server.SqlTriggerContext
Dim reader As SqlDataReader
triggContext = SqlContext.TriggerContext
Select Case triggContext.TriggerAction
' Insert.
Case TriggerAction.Insert
Using connection As New SqlConnection("context connection=true")
' Open the context connection.
connection.Open()
' Get the inserted row.
command = New SqlCommand("SELECT * FROM INSERTED;", connection)
reader = command.ExecuteReader()
reader.Read()
' Retrieve data from inserted row.
reader.Close()
End Using
' Delete.
Case TriggerAction.Delete
Using connection As New SqlConnection("context connection=true")
' Open the context connection.
connection.Open()
' Get the deleted rows.
command = New SqlCommand("SELECT * FROM DELETED;", connection)
reader = command.ExecuteReader()
If reader.HasRows Then
While reader.Read()
' Retrieve data from deleted rows
End While
reader.Close()
Else
' No rows affected.
End If
End Using
End Select
End Sub