Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Отмена выполнения части тригерра

9.4K
01 июня 2006 года
Waldemar
10 / / 23.08.2005
Доброго времени суток.

Есть задача

Есть 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. Приведенный мною код не работает, но по идее отображет суть проблемы
1
03 июня 2006 года
kot_
7.3K / / 20.01.2000
[QUOTE=Waldemar]Доброго времени суток.

Есть задача

Есть 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) - т.е. триггер который выполняется ВМЕСТО операции удаления - объявляется он так:

 
Код:
CREATE TRIGGER [USER_DELETE]
ON [dbo].[USER] INSTEAD OF DELETE
...

ну и дальше по тексту. Этот триггер не удалит запись а выполнит то что необходимо.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог