CREATE TRIGGER [USER_DELETE]
ON [dbo].[USER] INSTEAD OF DELETE
...
Отмена выполнения части тригерра
Есть задача
Есть 2 таблицы
USER и USER_TREE
на USER нужно повесить триггер FOR DELETE
следующего содержания
CREATE TRIGGER [USER_DELETE]
ON [dbo].[USER] FOR DELETE
AS
DECLARE @x1 int
SELECT @x1 = (select U_ID from DELETED)
[COLOR=red]
BEGIN TRANSACTION
update USER_TREE
set P_ID = 188
where id = @x1
COMMIT TRANSACTION
[/COLOR]
ROLLBACK TRANSACTION
Смысл поясняю
При попытке удаления пользователя из таблицы USER нужно в таблице USER_TREE задать ему другого предка (P_ID), а само удаление отменить
Подскажите как это сделать правильно
P.S. Приведенный мною код не работает, но по идее отображет суть проблемы
Есть задача
Есть 2 таблицы
USER и USER_TREE
на USER нужно повесить триггер FOR DELETE
следующего содержания
CREATE TRIGGER [USER_DELETE]
ON [dbo].[USER] FOR DELETE
AS
DECLARE @x1 int
SELECT @x1 = (select U_ID from DELETED)
[COLOR=red]
BEGIN TRANSACTION
update USER_TREE
set P_ID = 188
where id = @x1
COMMIT TRANSACTION
[/COLOR]
ROLLBACK TRANSACTION
Смысл поясняю
При попытке удаления пользователя из таблицы USER нужно в таблице USER_TREE задать ему другого предка (P_ID), а само удаление отменить
Подскажите как это сделать правильно
P.S. Приведенный мною код не работает, но по идее отображет суть проблемы[/QUOTE]
Я так понимаю стало хорошим тоном в данной теме - не указывать сервер и версию с которой работают? Что тогда будет хорошим тоном при ответе? ;)
Во вторых - судя по приведенному тригеру имеется ввиду сиквел2000 - непонятна цель - так надо когото удалять или нет??? В сиквеле есть два типа триггеров - один который привели вы, а второй - заместительный (INSTEAD) - т.е. триггер который выполняется ВМЕСТО операции удаления - объявляется он так:
Код:
ну и дальше по тексту. Этот триггер не удалит запись а выполнит то что необходимо.