ОК, название - глоток.Обновление значений таблиц в триггере в зависимости от подмножества данных
В основном это означает, что при работе со строками из вставленной таблицы, в зависимости от значения в определенном столбце, который разбивает строки на одно из двух подмножеств, данные обрабатываются одним из двух способов. Теперь это можно было повторить с помощью курсора, вероятно, CTE тоже, но есть ли другой способ, следующий (псевдо) код выглядит UGLY и на самом деле не работает, но он дает вам представление о том, что я ищу:
Trigger
ALTER trigger [dbo].[tcdA_Combined_ActiveUnitShiftExpiredStatus_UpdateShift] on [dbo].[cd_units] after update as
begin
SET NOCOUNT ON
IF UPDATE(shift_start)
BEGIN
IF(inserted.ag_id <> 'FIRE')
BEGIN
update cd_units set shift_expired_status = 0
from inserted
where inserted.unid = cd_units.unid and inserted.shift_start <= dbo.get_dts()
END
ELSE
BEGIN
update cd_units set shift_expired_status = 0
from inserted
where inserted.unid = cd_units.unid and inserted.shift_start >= dbo.get_dts()
END
update cd_units set sask911_shift_end = (select substring(shift_start,5,2)+'/'+substring(shift_start,7,2)
+' '+substring(shift_start,9,2)+':'+substring(shift_start,11,2) from inserted)
from cd_units join inserted on cd_units.unid=inserted.unid;
END
END
как всегда, заранее спасибо за помощь
Какова цель использования IF (inserted.ag_id <> 'FIRE')? В обоих условиях вы обновляете shift_expired_status до 0. – AgentSQL