Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 12.5.x - можно ли посмотреть план триггера без изменения данных / 5 сообщений из 5, страница 1 из 1
25.09.2009, 19:12
    #36218257
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 12.5.x - можно ли посмотреть план триггера без изменения данных
Господа, подскажите пожалуйста - можно ли как-то посмотреть план тригерра без изменения данных.

Простой пример
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
create table test_tgr1 (i  int)
go
create table test_tgr2(j int)
go
create trigger tgr_1 
on test_tgr1 for insert
as
if not exists (select  1  from test_tgr2 t inner join inserted i on t.j = i.i)
begin
    insert into test_tgr2 select i from inserted
end
go

set showplan on
go
--set noexec on
--go
insert into test_tgr1 values ( 1 )
go

set showplan off
go


drop table test_tgr1 

drop table test_tgr2

Я получаю план триггера только когда выполняется Insert. Если включить noexec то получаю только план для insert. Оно, вроде, понятно т.к. триггер просто не вызывается.

Но как быть если нужно посмотреть план триггера в "боевой" среде, где данные менять нельзя?

Заранее большое спасибо.
...
Рейтинг: 0 / 0
25.09.2009, 19:49
    #36218290
SQLMantis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 12.5.x - можно ли посмотреть план триггера без изменения данных
Kru,


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
begin tran
go
set showplan on
go
insert into test_tgr1 values ( 1 )
go
set showplan off
go
rollback tran
go
...
Рейтинг: 0 / 0
25.09.2009, 20:49
    #36218365
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 12.5.x - можно ли посмотреть план триггера без изменения данных
SQLMantisKru,


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
begin tran
go
set showplan on
go
insert into test_tgr1 values ( 1 )
go
set showplan off
go
rollback tran
go


Большое спасибо.

Способ с откатом транзакции имеет один недостаток - триггер реально выполняется. Если триггер дефектный, то он может зависнуть и тогда никакого результата не будет.

Мне подсказали хороший способ:
set showplan -> set fmtonly-> запрос на обновление

Будет выведен план, но при этом триггер не запустится и данные не будут обновлены.

И ещё, есть такое важное ограничение - должно быть право обновлять данные иначе к триггеру, кажется, невозможно подобраться.
...
Рейтинг: 0 / 0
26.09.2009, 15:06
    #36218853
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 12.5.x - можно ли посмотреть план триггера без изменения данных
Kru wrote:

Если я ничего не путаю, если поставить
set noexec on
ВНУТРИ триггера и его пересоздать,
то он будет при выполнении выполняться
с выведением плана запросов.

Но, естественно, от невыполнения триггера это не
спасёт. Трюк с откатом транзакции, по-моему,
-- единственно возможное решение, поскольку
очень сложно представить, как можно НЕ ВЫПОЛНЯТЬ
триггер при выполении DML на его таблице.
Он же триггер, он для этого и нужен, чтобы
выполняться в этом случае.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
26.09.2009, 15:10
    #36218859
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 12.5.x - можно ли посмотреть план триггера без изменения данных
MasterZiv wrote:

Да, ещё.

Я бы порекомендовал подумать про то, чтобы оформить внутренности
триггера как процедуру, работающую с одной
строкой изменённых данных.
Тогда в триггере будет цикл по курсору INSERTED или DELETED,
вызывающий эту процедуру, тогда просто процедуру
легче отлаживать в смысле производительности.

Правда, это не всегда целесообразно делать,
опять-таки, с точки зрения производительности :
лишний курсор, как никак. Но если этот курсор
и так есть, то стоит подумать о таком подходе.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 12.5.x - можно ли посмотреть план триггера без изменения данных / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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