Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Триггер / 12 сообщений из 12, страница 1 из 1
18.09.2002, 12:29:26
    #32051265
Осирис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
Создал триггер:

CREATE TRIGGER ins_t ON t
FOR INSERT
AS
update t set Versus = 0
from t, inserted
where t.messageid = inserted.messageid


Почему то при вставки строки в таблицу, поле Versus принимает значение 3. Елси изменить триггер следующим образом:

CREATE TRIGGER ins_t ON t
FOR INSERT
AS
update t set Versus = -3
from t, inserted
where t.messageid = inserted.messageid


то вставляется значение 0.

В чем дело ? Откуда берется тройка ?
...
Рейтинг: 0 / 0
18.09.2002, 12:40:22
    #32051269
Tulkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
Единственная версия-подлый триггер на апдэйт+нестед триггерс =ON
...
Рейтинг: 0 / 0
18.09.2002, 13:06:30
    #32051285
Осирис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
>> триггер на апдэйт+нестед триггерс

А это как ?
...
Рейтинг: 0 / 0
18.09.2002, 13:21:09
    #32051289
Tulkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
ну в смысле, что если есть триггер на апдэйт на этой же таблице, и включена опция вложенных триггеров, то при апдэйте,сделанном в триггере на инсерт, срабатывает триггер на апдэйт.
...
Рейтинг: 0 / 0
18.09.2002, 15:43:33
    #32051350
Осирис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
Вполне может быть, так как в триггере на update я увеличиваю это поле на 1. Но тогда почему этот триггер срабатывает три раза ?

И еще как включается/отключается опция вложенных триггеров ?

Если это Свойсва (базы данных) -> Recursive Triggers, то у меня там флажок не стоит.
...
Рейтинг: 0 / 0
18.09.2002, 15:58:47
    #32051356
VVG_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
Зайди в QA, включи Show Execution Plan, выполни в этом окошке insert и посмотри, что у тебя там происходит.
...
Рейтинг: 0 / 0
18.09.2002, 17:00:15
    #32051396
Kirk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
Дефолт? другой триггер?
...
Рейтинг: 0 / 0
18.09.2002, 17:07:51
    #32051402
Tulkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
Recursive Triggers -это возможность вызова триггера самим собой. Смотри Nested
...
Рейтинг: 0 / 0
18.09.2002, 17:50:35
    #32051415
Осирис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
>> Смотри Nested

Спасибо. Буду разбираться.
...
Рейтинг: 0 / 0
18.09.2002, 18:00:20
    #32051419
Осирис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
Все понял. На этой же таблице был триггер на Update, в котором данное поле увеличивалось на единицу. Причем в insert триггере 3 раза выполнялся update, что и влекло увеличение поля на 3.
Теперь о том, как это поправить. Как я понял, свойство - "позволять выполнять вложенные триггеры" это свойство сервера, а не конкретной таблицы. Или все таки это не так ? Могу ли я запретить это для одной отдельной таблицы ?
...
Рейтинг: 0 / 0
18.09.2002, 19:01:13
    #32051434
Tulkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
Можно в триггере проверять уровень вложенности (см. trigger_nestlevel())
...
Рейтинг: 0 / 0
18.09.2002, 19:21:12
    #32051443
Осирис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
Большое спасибо. Именно то, что мне нужно.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Триггер / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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