Udostępnij za pośrednictwem


Tworzenie, modyfikowanie i usuwanie wyzwalaczy

W SMO, wyzwalacze są reprezentowane za pomocą Trigger obiektu. Transact-SQL Kod, który uruchamia wyzwalacz, który jest uruchamiany po zestaw przez TextBody Właściwość Trigger obiektu.Typ wyzwalacza zestaw za pomocą innych właściwość Trigger obiektów, takich jak Update właściwość.Jest to wartość logiczna właściwość, która określa, czy wyzwalacz jest uruchamiany przez UPDATE rekordów w tabela nadrzędnej.

Trigger Obiekt reprezentuje tradycyjny, język edycji danych (DML) wyzwalaczy.W SQL Server 2008, wyzwalacze (DDL) języka definicja danych są również obsługiwane.Wyzwalacze DDL są reprezentowane przez DatabaseDdlTrigger obiektu i ServerDdlTrigger obiektu.

Przykład

Aby używać dostarczonych przykładów kodu źródłowego, należy wybrać środowisko, szablon oraz język programowania, które będą używane do tworzenia aplikacji. Aby uzyskać więcej informacji, zobacz temat „Jak utworzyć projekt SMO języka Visual Basic w programie Visual Studio .NET” lub „Jak utworzyć projekt SMO języka Visual C# w programie Visual Studio .NET” w dokumentacji SQL Server — książki online.

Tworzenie, modyfikowanie i usuwanie wyzwalacza w języku Visual Basic

Poniższy przykład kodu pokazuje jak utworzyć i Wstaw wyzwalacz aktualizacji w istniejącej tabela o nazwie Sales, AdventureWorks2008R2 bazy danych.Wyzwalacz wysyła komunikat monitu podczas aktualizacji tabela lub dodaje nowy rekord.

'Connect to the local, default instance of SQL Server.
Dim mysrv As Server
mysrv = New Server
'Reference the AdventureWorks2008R2 database.
Dim mydb As Database
mydb = mysrv.Databases("AdventureWorks2008R2")
'Declare a Table object variable and reference the Customer table.
Dim mytab As Table
mytab = mydb.Tables("Customer", "Sales")
'Define a Trigger object variable by supplying the parent table, schema ,and name in the constructor.
Dim tr As Trigger
tr = New Trigger(mytab, "Sales")
'Set TextMode property to False, then set other properties to define the trigger.
tr.TextMode = False
tr.Insert = True
tr.Update = True
tr.InsertOrder = Agent.ActivationOrder.First
Dim stmt As String
stmt = " RAISERROR('Notify Customer Relations',16,10) "
tr.TextBody = stmt
tr.ImplementationType = ImplementationType.TransactSql
'Create the trigger on the instance of SQL Server.
tr.Create()
'Remove the trigger.
tr.Drop()

Tworzenie, zmienianie i usuwanie wyzwalacza w środowisku Visual C#

Poniższy przykład kodu pokazuje jak utworzyć i Wstaw wyzwalacz aktualizacji w istniejącej tabela o nazwie Sales, AdventureWorks2008R2 bazy danych.Wyzwalacz wysyła komunikat monitu podczas aktualizacji tabela lub dodaje nowy rekord.

{
            //Connect to the local, default instance of SQL Server. 
            Server mysrv;
            mysrv = new Server();
            //Reference the AdventureWorks2008R2 database. 
            Database mydb;
            mydb = mysrv.Databases["AdventureWorks2008R2"];
            //Declare a Table object variable and reference the Customer table. 
            Table mytab;
            mytab = mydb.Tables["Customer", "Sales"];
            //Define a Trigger object variable by supplying the parent table, schema ,and name in the constructor. 
            Trigger tr;
            tr = new Trigger(mytab, "Sales");
            //Set TextMode property to False, then set other properties to define the trigger. 
            tr.TextMode = false;
            tr.Insert = true;
            tr.Update = true;
            tr.InsertOrder = ActivationOrder.First;
            string stmt;
            stmt = " RAISERROR('Notify Customer Relations',16,10) ";
            tr.TextBody = stmt;
            tr.ImplementationType = ImplementationType.TransactSql;
            //Create the trigger on the instance of SQL Server. 
            tr.Create();
            //Remove the trigger. 
            tr.Drop();
        }

Tworzenie, zmienianie i usuwanie wyzwalacza w PowerShell

Poniższy przykład kodu pokazuje jak utworzyć i Wstaw wyzwalacz aktualizacji w istniejącej tabela o nazwie Sales, AdventureWorks2008R2 bazy danych.Wyzwalacz wysyła komunikat monitu podczas aktualizacji tabela lub dodaje nowy rekord.

# Set the path context to the local, default instance of SQL Server and to the
#database tables in Adventureworks2008R2
CD \sql\localhost\default\databases\AdventureWorks2008R2\Tables\

#Get reference to the trigger's target table
$mytab = get-item Sales.Customer

# Define a Trigger object variable by supplying the parent table, schema ,and name in the constructor.
$tr  = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Trigger `
-argumentlist $mytab, "Sales"

# Set TextMode property to False, then set other properties to define the trigger. 
$tr.TextMode = $false
$tr.Insert = $true
$tr.Update = $true
$tr.InsertOrder = [Microsoft.SqlServer.Management.SMO.Agent.ActivationOrder]::First
$tr.TextBody = " RAISERROR('Notify Customer Relations',16,10) "
$tr.ImplementationType = [Microsoft.SqlServer.Management.SMO.ImplementationType]::TransactSql

# Create the trigger on the instance of SQL Server. 
$tr.Create()

#Remove the trigger. 
$tr.Drop()