|
Триггеры
|
|||
---|---|---|---|
#18+
Если в некоторых SQL серверах есть возможность создания триггеров типа AFTER DELETE , BEFORE DELETE , то в MS SQL 7.0 , как я понимаю , триггеры выполняются после модификации данных. Получается так , что нельзя написать триггер , который бы при удалении строки из главной таблицы , сперва удалил зависимые строки из подчиненных таблиц ? Или я не прав ? Посоветуйте , как выйти из этой ситуации . Заранее благодарен за ответ . ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2001, 13:08 |
|
Триггеры
|
|||
---|---|---|---|
#18+
Да, Вы не правы, в 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2001, 13:50 |
|
Триггеры
|
|||
---|---|---|---|
#18+
Да, вот еще насчет механизма работы триггеров. При удалении, действительно вначале удаляются записи, но операция не будет закончена, если есть триггер. При удалении все удаленные записи помещаются в таблицу deleted, на основании этой таблицы и можно провести каскадное удаление в зависимых таблицах, да и в общем Вы можете запрограммировать любую проверку или обновление на этом этапе. Удачи ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2001, 13:56 |
|
Триггеры
|
|||
---|---|---|---|
#18+
> Получается так , что нельзя написать триггер , который бы при удалении строки из > главной таблицы , сперва удалил зависимые строки из подчиненных таблиц ? Ну почему же? Можно! Нельзя только в том случае, если между этими таблицами задейстовавн механиз поддержки декларативной ссылочной целостности (DRI). Нужно выбрать что-либо одно - либо DRI, либо триггеры. Примечание. В MS SQL-2000 возможна настройка DRI с каскадным удалением/обновлением записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2001, 19:56 |
|
|
start [/forum/topic.php?fid=46&msg=32002533&tid=1827296]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 165ms |
0 / 0 |