powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Триггер
12 сообщений из 12, страница 1 из 1
Триггер
    #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
Триггер
    #32051269
Tulkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Единственная версия-подлый триггер на апдэйт+нестед триггерс =ON
...
Рейтинг: 0 / 0
Триггер
    #32051285
Осирис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> триггер на апдэйт+нестед триггерс

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

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

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

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


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