SQL-更新触发器

时间:2018-11-28 10:17:19

标签: sql sql-server tsql triggers

我有下表:

事件(IDEvent,IDBracelet,IDSensor,DateTime,TypeofEvent); 传感器(IDSensor,IDArea); Days_Areas(IDFestivalDay,IDBracelet,IDArea)。

当手镯未经许可进入某个区域时,我一直在尝试对事件进行更新。 到目前为止,我已经完成了以下操作,它适用于每种情况,但当我同时插入正确和错误事件时除外。

update Events
set TypeofEvent='red'
from inserted i,Events e
where i.IDEvent=e.IDEvent and exits (select * from inserted i join Days_Areas a on i.IDBracelet=a.IDBracelet join
 Sensor s on s.IDSensor=i.IDSensor where a.IDArea <> s.IDArea); 

此触发器是插入后更新的。 有谁能告诉我问题出在哪里?

编辑:关于此触发器,我还有另一个问题。 当我尝试同时插入一个事件时,同一条手镯经过一个其允许的传感器穿过另一个手镯,经过另一个未经允许的传感器穿过,正确的事件仍然变为红色。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

尝试一下:

update Events
set TypeofEvent='red'
from inserted i
INNER JOIN Events e
    ON i.IDEvent=e.IDEvent 
INNER join Days_Areas a 
    on i.IDBracelet=a.IDBracelet
INNER join Sensor s 
    on s.IDSensor=i.IDSensor 
where a.IDArea <> s.IDArea