powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Триггеры
4 сообщений из 4, страница 1 из 1
Триггеры
    #32002533
Andrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в некоторых SQL серверах есть возможность создания триггеров типа AFTER DELETE , BEFORE DELETE , то в MS SQL 7.0 , как я понимаю , триггеры выполняются после модификации данных.
Получается так , что нельзя написать триггер ,
который бы при удалении строки из главной таблицы , сперва удалил зависимые строки из подчиненных таблиц ? Или я не прав ? Посоветуйте , как выйти из этой ситуации . Заранее благодарен за ответ .
...
Рейтинг: 0 / 0
Триггеры
    #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
Триггеры
    #32002536
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, вот еще насчет механизма работы триггеров. При удалении, действительно вначале удаляются записи, но операция не будет закончена, если есть триггер. При удалении все удаленные записи помещаются в таблицу deleted, на основании этой таблицы и можно провести каскадное удаление в зависимых таблицах, да и в общем Вы можете запрограммировать любую проверку или обновление на этом этапе.

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


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