Поделиться через


Создание, изменение и удаление триггеров

В SMO триггеры представлены объектом Trigger. Код Transact-SQL, выполняемый при срабатывании триггера, задается в свойстве TextBody объекта Trigger. Тип триггера определяется другими свойствами объекта Trigger, например свойством Update. Это логическое свойство, которое указывает, срабатывает ли триггер при выполнении инструкции UPDATE для записей в родительской таблице.

Объект Trigger представляет обычные триггеры DML. В SQL Server 2008 также поддерживаются триггеры DDL. Триггеры DDL представлены объектом DatabaseDdlTrigger и объектом ServerDdlTrigger.

Примеры

Чтобы использовать какой-либо из представленных примеров кода, необходимо выбрать среду, шаблон и язык программирования, с помощью которых будет создаваться приложение. Дополнительные сведения см. в разделе «Как создать проект Visual Basic SMO в Visual Studio .NET» или «Как создать проект Visual C# SMO в Visual Studio .NET» в электронной документации по SQL Server.

Создание, изменение и удаление триггера в Visual Basic .NET

В этом примере кода показывается создание и вставка триггера Update в существующую таблицу с именем Sales в базе данных AdventureWorks. Триггер отправляет сообщение с напоминанием при обновлении таблицы или вставке новой записи.

'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()