|
|
|
Forum 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 остаются.
Как пошагово для каждой строки удалить???
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| По идее DELETE FROM dbo2 WHERE code IN (SELECT code FROM deleted)
|
|
|
|
|
Forum 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
Не зря говорят утро вечера мудренее -)
|
|
|
|
|
Supreme Being
      
участник
Last Login: 18.10.2005 13:32
Сообщ.: 157,
Visits: 1 728
|
|
>Нет, так работать тоже не будет! Это просто по другому тот же
>запрос переписанный. Тригер срабатывает на событие а не на строку.
Еще как будет. Ведь согласано справке deleted - это виртуальная _таблица_, которая содержит _все_ удаленные текушей командой записи.
|
|
|
|