русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Execute( 'declare cur_ins cursor local for


Дата добавления: 2015-07-09; просмотров: 513; Нарушение авторских прав


select ' + @col_name +

' from #temp_ins ' +

'open cur_ins ' +

'declare @value_new ' + @type_name + ', ' +

' @value_key int '+

'while (1 = 1) ' +

'begin ' +

' fetch next from cur_ins into @value_new ,

@value_key' +

' if (@@FETCH_STATUS = -1) ' +

break; ' +

' update table1 set ' + @col_name + ' =

@value_new where c3 = @value_key ' +

'end ' +

'close cur_ins '

);

End

End

-- Переходим к обработке следующего столбца

set @col_upd = @col_upd / 2

End

-- Снова разрешаем срабатывание триггера

Begin

Enable trigger trig3 ON table1

End

End

Else

if (@count3 = 0)

Begin

-- Триггер активирован командой INSERT

Insert into table1(c1, c2) (select c1, c2 from inserted)

End

End

Else

-- Триггер активирован командой DELETE

delete from table1 from deleted d where table1.c3 = d.c3

End

End

go

 

После выполнения следующей команды SQL:

 

update table1 set c1 = c1 + 1, c2 = c2 – 1

таблица table1 будет содержать следующие данные:

 

c1 c2 c3

Если затем выполнить команду SQL:

 

insert into table1(c1, c2) (select c1, c2 from table1 where c2 = 4)

то таблица table1 будет содержать следующие данные:

 

c1 c2 c3

В случае выполнения команды SQL:

delete from table1 where c1 = 3

 

над полученной после предыдущего шага таблицей table1, будет получен следующий результат:



 

c1 c2 c3

 

Таким образом очевидно, что написанный триггер trig3 срабатывая вместо соответствующих SQL команд полностью их повторяет.

 

DDL триггеры.

 

Пример 4.

Создание простейшего DDL триггера, реагирующего на попытку удаления таблицы table1 и вызывающему в этом случае откат транзакции.

 

/*

Проверяем наличие DDL триггера (поле parent_type = 0) с выбранным именем и если такой триггер существет, то уничтожаем его, учитывая, что он имеет уровень БД. В случае создания DDL триггера уровня сервера проверку его существования и, в случае необходимости, уничтожения нужно было бы осуществлять следующим образом:

if exists(select name from sys.server_triggers where name = 'trig_ddl1')



<== предыдущая лекция | следующая лекция ==>
From sys.columns where | Drop trigger trig_ddl1 on all server


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 5.781 сек.