Création, modification et suppression de déclencheurs
Dans SMO, les déclencheurs sont représentés à l'aide de l'objet Trigger. Le code Transact-SQL qui s'exécute lorsque le déclencheur est activé est défini par la propriété TextBody de l'objet Trigger. Le type de déclencheur est défini à l'aide d'autres propriétés de l'objet Trigger, par exemple la propriété Update. Il s'agit d'une propriété booléenne qui spécifie si le déclencheur est activé par une UPDATE des enregistrements sur la table parente.
L'objet Trigger représente des déclencheurs traditionnels du langage de manipulation de données (DML). Dans SQL Server 2008, les déclencheurs DDL sont également pris en charge. Les déclencheurs DDL sont représentés par l'objet DatabaseDdlTrigger et l'objet ServerDdlTrigger.
Exemple
Pour utiliser un exemple de code fourni, vous devrez sélectionner l'environnement, le modèle et le langage de programmation dans lequel créer votre application. Pour plus d'informations, consultez « Procédure : créer un projet Visual Basic SMO dans Visual Studio .NET » ou « Procédure : créer un projet Visual C# SMO dans Visual Studio .NET » dans la documentation en ligne de SQL Server.
Création, modification et suppression d'un déclencheur en Visual Basic
Cet exemple de code montre comment créer et insérer un déclencheur de mise à jour sur une table existante, nommée Sales, dans la base de données AdventureWorks2008R2. Le déclencheur envoie un message de rappel lorsque la table est mise à jour ou qu'un nouvel enregistrement est inséré.
'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()
Création, modification et suppression d'un déclencheur en Visual C#
Cet exemple de code montre comment créer et insérer un déclencheur de mise à jour sur une table existante, nommée Sales, dans la base de données AdventureWorks2008R2. Le déclencheur envoie un message de rappel lorsque la table est mise à jour ou qu'un nouvel enregistrement est inséré.
{
//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();
}
Création, modification et suppression d'un déclencheur dans PowerShell
Cet exemple de code montre comment créer et insérer un déclencheur de mise à jour sur une table existante, nommée Sales, dans la base de données AdventureWorks2008R2. Le déclencheur envoie un message de rappel lorsque la table est mise à jour ou qu'un nouvel enregistrement est inséré.
# 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()