创建、更改和删除触发器

在 SMO 中,触发器由 Trigger 对象表示。触发器被激发时运行的 Transact-SQL 代码由 Trigger 对象的 TextBody 属性设置。使用 Trigger 对象的其他属性(如 Update 属性)可以设置触发器的类型。这是一个布尔属性,它指定触发器是否由对父表上的记录所执行的 UPDATE 操作激发。

Trigger 对象表示传统的数据操作语言 (DML) 触发器。SQL Server 2008 也支持数据定义语言 (DDL) 触发器。DDL 触发器由 DatabaseDdlTrigger 对象和 ServerDdlTrigger 对象表示。

示例

若要使用所提供的任何代码示例,您必须选择创建应用程序所需的编程环境、编程模板和编程语言。 有关详细信息,请参阅 SQL Server 联机丛书中的“How to: Create a Visual Basic SMO Project in Visual Studio .NET”或“How to: Create a Visual C# SMO Project in Visual Studio .NET”。

在 Visual Basic 中创建、更改和删除触发器

此代码示例演示如何在 AdventureWorks 数据库中名为 Sales 的现有表上创建并插入更新触发器。当更新表或插入新记录时触发器会发送提醒消息。

'Connect to the local, default instance of SQL Server.
Dim mysrv As Server
mysrv = New Server
'Reference the AdventureWorks database.
Dim mydb As Database
mydb = mysrv.Databases("AdventureWorks")
'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()

在 Visual C# 中创建、更改和删除触发器

此代码示例演示如何在 AdventureWorks 数据库中名为 Sales 的现有表上创建并插入更新触发器。当更新表或插入新记录时触发器会发送提醒消息。

{ 
//Connect to the local, default instance of SQL Server. 
Server mysrv; 
mysrv = new Server(); 
//Reference the AdventureWorks database. 
Database mydb; 
mydb = mysrv.Databases("AdventureWorks"); 
//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 = Agent.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(); 
}