Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Триггеры / 4 сообщений из 4, страница 1 из 1
26.02.2001, 13:08
    #32002533
Andrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггеры
Если в некоторых SQL серверах есть возможность создания триггеров типа AFTER DELETE , BEFORE DELETE , то в MS SQL 7.0 , как я понимаю , триггеры выполняются после модификации данных.
Получается так , что нельзя написать триггер ,
который бы при удалении строки из главной таблицы , сперва удалил зависимые строки из подчиненных таблиц ? Или я не прав ? Посоветуйте , как выйти из этой ситуации . Заранее благодарен за ответ .
...
Рейтинг: 0 / 0
26.02.2001, 13:50
    #32002535
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггеры
Да, Вы не правы, в MSSQL 7 можно удалить записи в зависимых таблицах. Подробно о механизме работы триггеров в MSSQL 7 я бы посоветовал почитать Books online.
В MSSQL 7 есть три типа триггера insert update delete.
Вам нужен delete
Пример:
create trigger td_mytableParent on mytableParent for delete as
begin
declare
@numrows int

select @numrows = @@rowcount
if @numrows = 0
return

/* Delete all children in "mytableChild" */

delete mytableChild
from mytableChild t2, deleted t1
where t2.ID = t1.ID

return
end
go
...
Рейтинг: 0 / 0
26.02.2001, 13:56
    #32002536
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггеры
Да, вот еще насчет механизма работы триггеров. При удалении, действительно вначале удаляются записи, но операция не будет закончена, если есть триггер. При удалении все удаленные записи помещаются в таблицу deleted, на основании этой таблицы и можно провести каскадное удаление в зависимых таблицах, да и в общем Вы можете запрограммировать любую проверку или обновление на этом этапе.

Удачи
...
Рейтинг: 0 / 0
26.02.2001, 19:56
    #32002555
Garya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггеры
> Получается так , что нельзя написать триггер , который бы при удалении строки из
> главной таблицы , сперва удалил зависимые строки из подчиненных таблиц ?
Ну почему же? Можно! Нельзя только в том случае, если между этими таблицами задейстовавн механиз поддержки декларативной ссылочной целостности (DRI). Нужно выбрать что-либо одно - либо DRI, либо триггеры.
Примечание. В MS SQL-2000 возможна настройка DRI с каскадным удалением/обновлением записей.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Триггеры / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]