powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / не срабатывает триггер
12 сообщений из 12, страница 1 из 1
не срабатывает триггер
    #39608998
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (X64) Apr 22 2011 19:23:43 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

здравствуйте, помогите плз разобраться почему не срабатывает триггер на update

Код: sql
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.
27.
ALTER TRIGGER [dbo].[TemraSensorDataNotif_alter]
   ON  [dbo].[TemraSensorData_Notification]
   AFTER INSERT,update
AS 
BEGIN

  SET NOCOUNT ON;

if not exists (select * from deleted)
begin  
  update t
    set id_sensor   = A.id_sendor
       ,Sensor_Type = A.Type
  from  m2..TemraSensorData_Notification t 
  join (select i.id
              ,case when ISNULL(i.id_sensor,0) = 0 then sm.id_sendor else i.id_sensor end as id_sendor
              ,case when ISNULL(i.id_sensor,0) = 0 then sm.Type else i.Sensor_Type end as Type            
      from inserted i
           left join Reports..Shop_Mesto_Sensor (nolock) sm 
           on sm.ShopNo=i.ShopNo and sm.sensor_name like RTRIM(ltrim(i.Name_sensor))
     )A on t.id = A.id
end

  insert into _M(id, id_sensor1)
  select id, id_sensor
  from inserted
END



Суть в том, что данные попадают в m2..TemraSensorData_Notification и затем, если id_sensor is null or = 0, тогда это значение берется из таблицы Reports..Shop_Mesto_Sensor. Я получаю на каждую вставку значений 2 значения в таблице _M (1 на insert и 1 на update)
Все так и работает, но есть некоторые записи (редкие), по которым я в таблице _M получаю только одну запись на Insert (т.е. триггер на update не срабатывает). Причем после, я делаю update вручную

Код: sql
1.
2.
3.
update TemraSensorData_Notification
set id_sensor = id_sensor
where id in('8EDB1A4D-D1DD-4421-ABD5-878F7416753C')


и данные заносятся. Почему так происходит? что я упустил?
нашел похожую проблему, но мне его решение не подходит (если я все правильно понял):
http://www.cyberforum.ru/sql-server/thread1335905.html
...
Рейтинг: 0 / 0
не срабатывает триггер
    #39609006
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandist,

если это не update тогда делать update?
Код: sql
1.
if not exists (select * from deleted)
...
Рейтинг: 0 / 0
не срабатывает триггер
    #39609050
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

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

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

не понимаю...
Если данные вставляются (т.е. табла deleted пустая), то мы делаем update
но... вставка в таблицу _M не входит в этот кусок... она не зависит от этого условия
...
Рейтинг: 0 / 0
не срабатывает триггер
    #39609135
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandist,

я так понимаю включена рекурсия?
m2 - ? так же хоть база?

что даёт
Код: sql
1.
SELECT * FROM sys.objects WHERE Name = 'TemraSensorData_Notification'



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

да, рекурсия... да, база M2, поэтому иногда писал иногда нет (не имеет же вроде значения)

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

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

тестил день и пришел к выводу, что разделение одного триггера на два разных (один на insert и один на update) - решили проблему
...
Рейтинг: 0 / 0
не срабатывает триггер
    #39609643
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandist,

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

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


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