Удаление записей
Проблема:
Код:
DELETE FROM Table1 WHERE ID = 10
при попытке удаления записи из таблицы возникает сообщение о том, что есть ссылки на данную запись из других таблиц.
Как можно сделать внешние ключи данной таблицы неактивными/активными? В Oracle это можно было сделать так:
Код:
ALTER TABLE Table1
Disable constraint fk_1
Disable constraint fk_1
А как это реализуеться в MS SQL 2005?
Код:
ALTER TABLE Table1
Disable constraint fk_1
Disable constraint fk_1
вам не эту таблицу надо перестроить, а ссылающиеся на нее.
Если предполагается, что при удалении записи в главной таблицы должны удаляться записи в подчиненной, то ограничение ссылочной целостности нужно создавать с опцией ON DELETE CASCADE.
А если внешних ключей в дочерних таблицах слишком много и вылавливать их долго?
В сообщении об ошибке должно быть указано, с ограничением какой именно связи вступает в конфликт операция удаления. Как верно заметил Ora-cool, включение каскадных операций должно легко решить проблему. Если же каскад реализовать невозможно, его может заменить хранимая процедура, удаляющая сначала связанные данные, а затем данные из Table1.