Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

проблеммы с trigger ом [D5, MSSQL]


kvit ©   (2004-01-12 16:04:00) 

БД управляется MS SQL7.0
Есть таблица Table1 и Table2, связанные ключами "один ко многим" по полю <KOD>.
Для Table1, имеющей первичный ключ, создаю триггер для каскадного удаления из таблицы Table2.
Хочу теперь удалить запись из Table1, но вот беда:
ошибка целостности опережает срабатывание триггера.
Подскажите как разрешить проблему.


Academic   (2004-01-12 16:51:00) [1]

М-да, в 7 SQLe действительно все триггеры AFTER.
Сомневаюсь однако про отсутствие ON CASCADE DELETE у FK
в BookOnline нет на этот счет сведений


Ega23   (2004-01-12 16:35:00) [2]

А нужно ли каскадное удаление в триггере делать? Я обычно такие вещи через ХП делаю, т.к. один раз всю инфу за последний день случайно убил.


SergSuper   (2004-01-12 16:21:00) [3]

В MS SQL7.0 нет каскадного удаления через foreign key, как и нет триггеров BEFORE.
Надо ставить 2000-й и вообще не писать триггеров или писать каскадное удаление в триггере, а foreign key убрать


Johnmen   (2004-01-12 16:16:00) [4]

>kvit © (12.01.04 16:04)

Никаких своих триггеров для этого не надо. Просто в описании FK надо ON CASCADE DELETE проставить.


kvit   (2004-01-12 16:11:00) [5]

Где ставить BEFORE?

Вот оригинал тригера:

CREATE TRIGGER [Ttrigg1] ON [TABLE1]
FOR DELETE
AS

declare @kod int
select @kod=i.kod from deleted i
delete from table2 where kod=@kod


GLFox   (2004-01-12 16:11:00) [6]

Sorry, но мне интересно (по причине отсутствия реального опыта работы M$ SQL), а foreign key там не делает каскадного удаления (если там он вообще присутствует)?


Academic   (2004-01-12 16:06:00) [7]

триггер болжен быть BEFORE DELETE


Наверх

Титульная страница Поиск, карта сайта Написать письмо