INSTEAD UPDATE TRIGGER для таблицы с внешним ключом - PullRequest
0 голосов
/ 03 января 2011

Я получаю эту ошибку:

Невозможно создать INSTEAD OF DELETE или INSTEAD OF UPDATE TRIGGER 'trig_Income_Updater' для таблицы 'MYBUDGET.tbl_Income'.Это потому, что в таблице есть FOREIGN KEY с каскадным DELETE или UPDATE.

Я могу использовать «FOR UPDATE».а как сделать так, чтобы игнорировать оригинальное обновление?

Ответы [ 2 ]

2 голосов
/ 03 января 2011

Чтобы игнорировать оригинальное обновление, вам нужно использовать RAISERROR, а затем ROLLBACK.

Здесь - это пример в разделе «Использование триггера DML AFTER для принудительного применения бизнес-правила междуРаздел «таблицы покупок и заголовков и поставщиков»

1 голос
/ 03 января 2011

Просто обновите нужные поля и затем «отмените» исходное обновление, используя «вставленные» и «удаленные» временные таблицы, предоставленные триггеру.

Например (не проверено):

--Do the stuff you want
UPDATE table SET fields = values WHERE some condition


--Undo the original update (minus anything you WANT changed above)
UPDATE table SET unchangingfield = deleted.unchangingfield WHERE ID = deleted.ID

«Вставленная» таблица будет содержать новые значения, а «удаленная» таблица содержит значения, которые изменяются. Вы можете присоединяться, запрашивать и иным образом обрабатывать их, как если бы они были настоящими таблицами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...