Тригер для удаления в варианте FOR EACH ROW для SQL 2000
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Тригер для удаления в варианте FOR EACH ROW... Expand / Collapse
Автор
Сообщение
05.08.2005 15:18
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 02.02.2004 19:17
Сообщ.: 71, Visits: 782
Всем привет!
Вот уперся, ни куда!
Нужно удалить 5 строк и dbo1 и точно такие же 5 строк из dbo2

Простейший триггер
CREATE TRIGGER trDbo1Del ON dbo.dbo1
AFTER DELETE
AS

DECLARE @code int

SELECT @code=code FROM deleted

delete from dbo2 where code=@code


Этот вариант удаляет только 1 строку 4 остаются.
Как пошагово для каждой строки удалить???

Сообщ. #877554
05.08.2005 16:21
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
По идее DELETE FROM dbo2 WHERE code IN (SELECT code FROM deleted)
Сообщ. #877563
08.08.2005 10:05
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 02.02.2004 19:17
Сообщ.: 71, Visits: 782
Нет, так работать тоже не будет! Это просто по другому тот же запрос переписанный. Тригер срабатывает на событие а не на строку.
Вопрос решил так, вдруг кому то пригодится:

CREATE TRIGGER trdbo1 ON dbo1
AFTER DELETE
AS


DECLARE @code int

Declare Cur cursor for SELECT code FROM deleted

open cur
fetch next from cur into @code
WHILE (@@FETCH_STATUS <> -1)
BEGIN
IF (@@FETCH_STATUS <>2)
BEGIN
delete from dbo2 where code = @code
END
FETCH NEXT FROM cur INTO @code
END
CLOSE cur

DEALLOCATE cur

Не зря говорят утро вечера мудренее -)
Сообщ. #877657
09.08.2005 10:32
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 18.10.2005 13:32
Сообщ.: 157, Visits: 1 728
>Нет, так работать тоже не будет! Это просто по другому тот же
>запрос переписанный. Тригер срабатывает на событие а не на строку.

Еще как будет. Ведь согласано справке deleted - это виртуальная _таблица_, которая содержит _все_ удаленные текушей командой записи.
Сообщ. #877764
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl, Alexey Spirin

Время GMT +3:00, Сейчас 9:42