powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Почему срабатывает триггер ?
11 сообщений из 11, страница 1 из 1
Почему срабатывает триггер ?
    #39692679
Компостеров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер, коллеги
Microsoft SQL Server 2008 R2 (SP3) - 10.50.6000.34 (X64)
Aug 19 2014 12:21:34
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)



Кто может объяснить - почему срабатывает триггер , хотя Update не происходит

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TRIGGER dbo.tu_agent
ON dbo.agent
FOR update AS
BEGIN 

    select 'Начало' as msg, getdate() as dt, (select count(*) from inserted) as cnt_inserted, (select count(*) from deleted) as cnt_deleted
END
go

-- Невыполнимое условие

update agent set info = 'aaas' where 1 = 2



Результат
Код: plaintext
1.
msg	               dt	                           cnt_inserted	cnt_deleted	   
Начало	23.08.2018 10:23:47.350 PM	       0	0	  


The command completed with no results returned
...
Рейтинг: 0 / 0
Почему срабатывает триггер ?
    #39692681
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компостеров,

по тому что у вас срабатывает какой-то другой триггер?
...
Рейтинг: 0 / 0
Почему срабатывает триггер ?
    #39692683
Компостеров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

Триггер на таблицу agent для Update только один
...
Рейтинг: 0 / 0
Почему срабатывает триггер ?
    #39692684
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А с чего вы решили, что триггер в описанной ситуации не должен срабатывать?

В первом же абзаце в справке написано
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql?view=sql-server-2017 DML triggers execute when a user tries to modify data through a data manipulation language (DML) event. DML events are INSERT, UPDATE, or DELETE statements on a table or view. These triggers fire when any valid event is fired, regardless of whether or not any table rows are affected.
...
Рейтинг: 0 / 0
Почему срабатывает триггер ?
    #39692688
Компостеров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из-за условия


update agent set info = 'aaas' where 1 = 2
...
Рейтинг: 0 / 0
Почему срабатывает триггер ?
    #39692689
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КомпостеровTaPaK,

Триггер на таблицу agent для Update только один
был напуган описанием результата.. AFTER триггер не срабатыват только в случае ошибки. Нормальная практика в начале всех триггеров проверять наличие записей в inserted/deleted
...
Рейтинг: 0 / 0
Почему срабатывает триггер ?
    #39692690
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторAFTER specifies that the DML trigger is fired only when all operations specified in the triggering SQL statement have executed successfully. All referential cascade actions and constraint checks also must succeed before this trigger fires.
...
Рейтинг: 0 / 0
Почему срабатывает триггер ?
    #39692691
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компостеровиз-за условия


update agent set info = 'aaas' where 1 = 2Ну как и предполагалось, справку никто не читал.
...
Рейтинг: 0 / 0
Почему срабатывает триггер ?
    #39692694
Компостеров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. сервер делает лишнюю операцию ?
...
Рейтинг: 0 / 0
Почему срабатывает триггер ?
    #39692695
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компостеров,

сервер делает как описано
...
Рейтинг: 0 / 0
Почему срабатывает триггер ?
    #39692697
Компостеров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно, вопрос закрыт.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Почему срабатывает триггер ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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