Я искренне не знаю, что не так с вашим триггером, он должен работать AFAIK.
Но это определенно не путь. Вы , кажется пытаетесь проверить некоторые вставленные значения. В этом случае вы должны использовать INSTEAD OF INSERT
триггер, а не AFTER INSERT
, как вы это делаете в настоящее время.
Так было бы так:
ALTER trigger [dbo].[NULL_TIME_TRIGGER]
on [dbo].[Products]
instead of insert
as
begin
insert into Products (
field1, field2, ..., fieldn, ParkingStartTime
) select
field1, field2, ..., fieldn,
case when ParkingStartTime < CAST(GETDATE() AS TIME) then NULL else ParkingStartTime end
from
inserted
end
go
Таким образом, SQL Server будет перехватывать все вставки в таблицу Products
и будет выполнять вставку только внутри триггера, который фиксирует значение ParkingStartTime
. Таким образом, триггеру не нужно выполнять другое обновление, чтобы сделать их правильными.
Надеюсь, это поможет.