У меня есть три таблицы, давайте назовем их GrandParent, Parent и Child. Родитель имеет внешний ключ первичного ключа GrandParent, настроенный с помощью каскадного удаления. Аналогично, у Child есть внешний ключ к первичному ключу Parent.
В настоящее время я пытаюсь создать триггер, чтобы при удалении записи в любой из трех таблиц (Grandparent, Parent или Child), янужно вызвать хранимую процедуру. Для завершения своей работы хранимой процедуре требуется первичный ключ дедушки и значение из столбца для дочернего элемента.
В настоящее время я рассматриваю создание триггера для дочернего элемента. Моя проблема заключается в том, что к тому времени, когда я получаю запуск триггера, когда триггер установлен на «УДАЛЕНО», значения либо исчезают, либо становятся недоступными из базы данных для GrandParent, а в удаленной виртуальной таблице есть данные только для дочернего элемента. таблица.
Я пытался использовать триггер "INSTEAD OF DELETE", но, очевидно, его нельзя использовать для таблицы с каскадным удалением.
Есть ли какой-либо способ доступа к даннымот GrandParent или Parent в триггере DELETE ребенка? Если бы я мог хотя бы добраться до Parent, я мог бы использовать Внешний ключ, чтобы получить то, что мне нужно, из таблицы GrandParent.
CREATE TRIGGER [DeletionTrigger] ON [Child]
ON DELETE
AS
DECLARE @ParentID int
DECLARE @ApplicationID int
DECLARE @GPID int
SELECT @ParentID = ParentID, @ApplicationID = ApplicationID FROM deleted --ApplicationID is the item needed from Child table
SELECT @GPID = GPID FROM Parent WHERE Parent.ParentID = @ParentID
EXEC DeletionNotifier @GPID, @ApplicationID
END