SqlTriggerContext Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece informações contextuais sobre o gatilho que foi disparado.
public ref class SqlTriggerContext sealed
public sealed class SqlTriggerContext
type SqlTriggerContext = class
Public NotInheritable Class SqlTriggerContext
- Herança
-
SqlTriggerContext
Exemplos
O exemplo a seguir mostra um SqlTriggerContext objeto sendo usado para determinar se ocorreu uma Insert ação. Se uma linha tiver sido inserida na user
tabela do , o nome de usuário e o nome real serão recuperados da linha inserida e adicionados à tabela 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
Comentários
As informações contextuais fornecidas incluem o tipo de ação que fez com que o gatilho fosse acionado, quais colunas foram modificadas em uma operação UPDATE e, no caso de um gatilho DDL (linguagem de definição de dados), uma estrutura EventData XML (consulte Referência do Transact-SQL) que descreve a operação de disparo.
Uma instância de SqlTriggerContext está disponível na SqlContext classe , quando o código está em execução dentro de um gatilho por meio da TriggerContext propriedade .
Propriedades
ColumnCount |
Obtém o número de colunas contidas na tabela de dados associada ao gatilho. Esta propriedade é somente para leitura. |
EventData |
Obtém os dados de evento específicos para a ação que acionou o gatilho. |
TriggerAction |
Indica qual ação que acionou o gatilho. |
Métodos
IsUpdatedColumn(Int32) |
Retorna |