Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Решил каскадом удалить записи - ХАХАХАХА / 7 сообщений из 7, страница 1 из 1
10.09.2001, 11:41
    #32013775
Бомж РА
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Решил каскадом удалить записи - ХАХАХАХА
Решил каскадом удалить записи - просто удаляем родителя и тр-ом детей.
Все красиво,но на детках висит функционал (тр. на удаление),
который нуждается в информации из родит. записи - той самой - удаляемой.
Сказано - сделано, но где-то я налетал на такую вещь, что если запись
в тр. то ее в базе уже нетути , она в deleted. А тр. там , за горизонтом,
требует живую запись из парента , понимаешь.

ПРим .ред.
"Using the inserted and deleted Tables"
During the execution of a DELETE or UPDATE statement, rows are deleted from
the trigger table and transferred to the deleted table. The deleted table
and the trigger table ordinarily have no rows in common.
(это для снобов, которые скажут, что мол книжки читать надобно.)

Ну ладно, это было давно и ... , используем INSTEAD OF ...
, благо такой зверь уже появился.
Проверяем - о живая запись еще тут, класс. Но, ноооооо, нифига себе (см.пример)
, она и дальше тут (...били, били , эх где та мышка, что хвостиком махнула?).
Загадка , кто не прав ?
(ну понятно, что я, а вот где? )

create table t1(k int)
insert into t1 (k ) values(1)
insert into t1 (k ) values(2)
insert into t1 (k ) values(3)
insert into t1 (k ) values(4)
insert into t1 (k ) values(5)
insert into t1 (k ) values(6)
insert into t1 (k ) values(7)
insert into t1 (k ) values(
go
create trigger d1 on t1
INSTEAD OF delete
as
declare @d int
select @d = t1.k from t1, deleted where t1.k=deleted.k
print 'еще здесь: -> ' + cast(@d as varchar(12))
go
--удаляем 3 запись
delete from t1 where k = 3
print @@ROWCOUNT
go
-- а она еще тут, кто не прав ?
select * from t1 where k = 3
go
Если вы скажите , что условие
select @d = t1.k from t1, deleted where t1.k=deleted.k
кривое, смените тип тр. (например After или FOR)и выполните еще раз.
Находит эту запись, на экран ничего не выводит, но
где-то что-то находит, а вот уверенности у меня,
как то все это не вызывает - боюсь использовать,
ведь дров наломает.
Поможите люди добри кто чем может!!!
...
Рейтинг: 0 / 0
10.09.2001, 11:46
    #32013776
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Решил каскадом удалить записи - ХАХАХАХА
>Решил каскадом удалить записи - просто удаляем родителя и тр-ом детей.
Как я понял из примера используется SQL 2000, так почему тогда триггером? Ставьте каскад прямо в DRI.
...
Рейтинг: 0 / 0
10.09.2001, 11:51
    #32013777
Бомж РА
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Решил каскадом удалить записи - ХАХАХАХА
Спасибо, попробую, но считайте что интерес спортивный?
Т.е. ежели - DRI , то будем думать все Ок?

Да вот над чем не дуиал - так это над тем, что есть в системе
режим когда идет усиленный сброс данных или закачка.
В этом случае используется disable trigger - на участвующих таблицах
(режим однопользовательский)- отсюда - как поведет DRI?
С уважением!
...
Рейтинг: 0 / 0
10.09.2001, 12:59
    #32013789
George
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Решил каскадом удалить записи - ХАХАХАХА
Т, что запись еще там - ничего особенного.
Ты выполнил Instead of триггер, в котором ничего не удалил.
...
Рейтинг: 0 / 0
10.09.2001, 13:01
    #32013791
George
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Решил каскадом удалить записи - ХАХАХАХА
При перекачке данных DTS триггеры действительно отключаются, а констрейны - нет.
Правда, я не проверял на каскадных констрейнах, но, думаю, что тоже не отключают.
...
Рейтинг: 0 / 0
11.09.2001, 04:43
    #32013807
Бомж РА
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Решил каскадом удалить записи - ХАХАХАХА
ТАк мне еще и тр. писать delete эту же самую запись - нееееееееет ребята , пулемет я вам не дам.

А на счет DTS - в 7 не отключались, были банально связаны 2 таблицы - нифига.
Насчет 2к - попробуем, ну так как насчет instead of delete.....

С уважением !
...
Рейтинг: 0 / 0
11.09.2001, 06:52
    #32013818
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Решил каскадом удалить записи - ХАХАХАХА
Не замерял время при перекачке из DTS, но при установленном каскаде в DRI были вот такие результаты при вставке записей в цикле (20000 записей) и потом удалении 20000 (конечно не в цикле
):
на триггерах и DRI вставка проходила как 2:1 по времени (15 сек. против 7 сек.), удаление одинаково.
И по поводуусиленного сброса данных - как же тут триггера отключишь, если в них "дочерние" записи удаляются
Это при вставке.

Но уж раз MS придумал каскад на уровне DRI, то его и нужно использовать, всяко-разно быстрее будет.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Решил каскадом удалить записи - ХАХАХАХА / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]