Контрольное задание №3. Создание, изменение и удаление триггеров
Скачать 7.85 Kb.
|
Создание, изменение и удаление триггеровВ SMO триггеры представлены объектом Trigger. Код Transact-SQL, который выполняется при срабатывании триггера, задается свойством TextBody объекта Trigger. Тип триггера определяется другими свойствами объекта Trigger, например свойством Update. Это логическое свойство, которое указывает, срабатывает ли триггер при выполнении инструкции UPDATE для записей в родительской таблице. Объект Trigger представляет обычные триггеры языка обработки данных DML. В SQL Server поддерживаются триггеры языка определения данных (DDL). Триггеры DDL представлены объектом DatabaseDdlTrigger и объектом ServerDdlTrigger. Создание, изменение и удаление триггера на языке Visual C#В этом примере кода показано, как создать и вставить триггер обновления в существующую таблицу с именем Salesв базе данных AdventureWorks2019. Триггер отправляет сообщение с напоминанием при обновлении таблицы или вставке новой записи. C#Копировать { //Connect to the local, default instance of SQL Server. Server mysrv; mysrv = new Server(); //Reference the AdventureWorks2012 database. Database mydb; mydb = mysrv.Databases["AdventureWorks2012"]; //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(); } Создание, изменение и удаление триггера в PowerShellВ этом примере кода показано, как создать и вставить триггер обновления в существующую таблицу с именем Salesв базе данных AdventureWorks2019. Триггер отправляет сообщение с напоминанием при обновлении таблицы или вставке новой записи. PowerShellКопировать # Set the path context to the local, default instance of SQL Server and to the #database tables in Adventureworks2012 CD \sql\localhost\default\databases\AdventureWorks2012\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() |