Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Каскадное удаление / 3 сообщений из 3, страница 1 из 1
31.05.2001, 13:00
    #32006728
Евгений
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каскадное удаление
Каким образом сделать триггер на каскадное удаление. При попытке простого запроса на удаление пишет, что на родительскую таблицу ссылается внешний ключ. В конфе где-то было предложение удалять ограничения и потом их восстанавливать, но хотелось бы обойтись без этого. Используется SQL Server 7.0
...
Рейтинг: 0 / 0
31.05.2001, 13:28
    #32006732
Alexander Chepack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каскадное удаление
В версиях до 7.0 включительно Вы, если Вам необходимо каскадное удаление, всю целостность придется реализовывать на триггерах (без foreign keys), или для удаления
писать специальную sp - но тогда это уже нельзя будет назвать каскадным удалением...

Ну а в SQL2K все красиво ...
...
Рейтинг: 0 / 0
31.05.2001, 13:40
    #32006733
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каскадное удаление
Хотелось бы добавить следующее. Предложение "удалять ограничения и потом их восстанавливать" - это не есть хорошо. Операция удаления выполняется не мгновенно, а следовательно существует ненулевая вероятность, что кто-то попробует в это время вклиниться и, например, добавить данные, которые не удовлетворяют ссылочной целостности. Поскольку в этот момент foreign keys выключены, то эта операция выполнится. А секундой позже произойдет попытка включения foreign keys, которая облажается на новых данных. И привет.
Alexander прав - на 7-ке или только триггера без foreign keys или sp.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Каскадное удаление / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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