Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Определить событие триггера  [new]
izoldov-roskini
Member

Откуда:
Сообщений: 1169
Есть триггер AFTER INSERT, UPDATE, DELETE , как определить в теле триггера какое именно событие произошло из 3-х ?
9 июн 11, 13:58    [10789617]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
Т Р И Г Г Е Р
Guest
Посчитать количество записей в таблицах inserted и deleted
9 июн 11, 13:59    [10789627]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
izoldov-roskini
Member

Откуда:
Сообщений: 1169
ну допустим равны и че? при update запись попадает и туда и туда
9 июн 11, 14:01    [10789640]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
Гадя Петрович
Member

Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали
Сообщений: 52912
izoldov-roskini
ну допустим равны и че? при update запись попадает и туда и туда
а при INSERT и DELETE?
9 июн 11, 14:02    [10789646]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
izoldov-roskini,

все очевидно
inserted=deleted == update
inserted=0 == delete
deleted=0 == insert
9 июн 11, 14:07    [10789684]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
А если все ноль, то не определить.
9 июн 11, 14:07    [10789691]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
izoldov-roskini
Есть триггер AFTER INSERT, UPDATE, DELETE , как определить в теле триггера какое именно событие произошло из 3-х ?
Забить навеки на универсальность и написать три отдельных для конкретных операций.
9 июн 11, 14:18    [10789762]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
izoldov-roskini
Member

Откуда:
Сообщений: 1169
не работает, делаю update говорит что в inserted строк нет
9 июн 11, 14:19    [10789770]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
izoldov-roskini
не работает, делаю update говорит что в inserted строк нет
Их наверное и в deleted нет при этом.
9 июн 11, 14:20    [10789778]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
izoldov-roskini
Member

Откуда:
Сообщений: 1169
почему?
9 июн 11, 14:21    [10789788]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
izoldov-roskini
почему?
Потому что ваш запрос, наверное, не проапдейтил ни одной записи.

Сообщение было отредактировано: 9 июн 11, 14:24
9 июн 11, 14:24    [10789811]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
izoldov-roskini
Member

Откуда:
Сообщений: 1169
все, допер, сделал вместо @@ROWCOUNT, select count(id) from inserted
все заработало, @@ROWCOUNT для этого случая не годится
9 июн 11, 14:24    [10789813]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
izoldov-roskini
Member

Откуда:
Сообщений: 1169
Гавриленко Сергей Алексеевич,

проапдейтил
9 июн 11, 14:25    [10789817]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Гавриленко Сергей Алексеевич
А если все ноль, то не определить.

Ну, вродь можно достоверно сказать, что не INSERT :)

А так, соглашусь с tpg. Если определение типа операции критично, то тогда лучше отдельные триггеры писать.
9 июн 11, 14:26    [10789826]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
izoldov-roskini
Member

Откуда:
Сообщений: 1169
Гавриленко Сергей Алексеевич,

может действительно сделать отдельные триггера?
9 июн 11, 14:27    [10789836]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
Glory
Member

Откуда:
Сообщений: 104751
kDnZP
Гавриленко Сергей Алексеевич
А если все ноль, то не определить.

Ну, вродь можно достоверно сказать, что не INSERT :)

INSERT mytable (f1,f2)
SELECT f1,f2 FROM table2 WHERE 1=0
9 июн 11, 14:47    [10790004]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
kDnZP
Ну, вродь можно достоверно сказать, что не INSERT :)
Достоверно можно сказать, что ничего достоверно сказать нельзя.
9 июн 11, 14:48    [10790014]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Можно ли в триггере(for U,I,D) определить какое действие над табл. вызвало его?
9 июн 11, 14:51    [10790039]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Glory
kDnZP
пропущено...

Ну, вродь можно достоверно сказать, что не INSERT :)

INSERT mytable (f1,f2)
SELECT f1,f2 FROM table2 WHERE 1=0

Да, вы правы, про пустой инсерт не подумал.
9 июн 11, 14:53    [10790064]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
izoldov-roskini
Member

Откуда:
Сообщений: 1169
iap,

спс
9 июн 11, 14:54    [10790076]     Ответить | Цитировать Сообщить модератору
 Re: Определить событие триггера  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Для полноты картыны: Уловие в тригере
9 июн 11, 14:55    [10790090]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить