и содержит данные, приведенные в табл. 1.
Табл. 1. Содержимое таблицы table1
Предполагаем, что с текущим пользователем ассоциировано пространство имен dbo.
DML триггеры.
Во всех примерах предполагается, что соединение с СУБД было произведено под таким логином (пользователем), для которого пространством имен является dbo.
Пример 1.
Создание простейшего AFTER триггера, который срабатывает при выполнении команды DELETE и в случае удаления одной из строк таблицы, содержащих в столбце c1 значение 1, удаляет все такие строки в таблице. Кроме этого возникает проблема, связанная с проверкой того, существует ли такой триггер в данном пространстве имен.
/*
Перед созданием триггера необходимо убедиться, что такого триггера в используемом пространстве имен. Для этого необходимо сделать соответствующий запрос к системной таблице sysobjects, в котором необходимо выбрать строку, содержащую информацию об объекте с именем trig1, тип которого TR (триггер). Кроме этого поле uid (номер схемы) должно соответствовать номеру нужного пространства имен. Этот номер можно получить путем выборки из системного представления sys.schemas поля schema_id у строки, которая содержит в поле name соответствующее название пространства имен.
*/
if exists(select * from sysobjects where name = 'trig1' and
uid = (select schema_id from sys.schemas where name = 'dbo') and type = 'TR')