У меня есть таблицы A и B. В таблице B есть ограничение внешнего ключа, ссылающееся на таблицу B. Но поскольку SQL Server 2000 поддерживает только каскадное удаление, а не аннулирование, я решил исправить это с помощью триггера.
Проблема: приведенный ниже триггер не работает:
CREATE TRIGGER dbo.TR_A_B_CascadingNullify ON dbo.A
FOR DELETE
AS
UPDATE dbo.B
SET idA = NULL
WHERE idA IN (SELECT id FROM DELETED)
;
При удалении строки в A, на которую нет ссылок, все работает.Но когда ссылка на строку удаляется, она перестает работать с ограничением внешнего ключа сообщением DELETE statement conflicted with COLUMN REFERENCE constraint 'FK_B_A'. The conflict occurred in database 'x', table 'B', column 'idA'.
И, наконец, при установке параметра Enforce Foreign Key Constraint
на No
триггер работает, идля столбца в таблице B установлено значение NULL.
Что я делаю не так?