У меня есть база данных полетов с несколькими таблицами. Я пытаюсь сделать триггер, чтобы отрицать вставку или обновление в полете, у которого есть запрос на обслуживание. Если самолет запрошен для обслуживания, не должно быть полетов между этими временами. Я получаю сообщение об ошибке просто отлично, но, похоже, я всегда получаю его. Как так? Спасибо заранее, я всегда ценю помощь.Триггер с двумя столами
alter trigger DateMaintenanceTrigger
on Flight
after update, insert
as
select
m.StartDate, m.TargetEndDate, f.DepartureDateID
from
Maintenance.MaintenanceRequest as m
inner join
Flight as f on f.PlaneID = m.PlaneID
where
f.DepartureDateID < m.TargetEndDate
and f.DepartureDateID > m.StartDate
begin
raiserror ('Flight cannot take place on this maintentance date, plane not ready.', 16,1);
rollback transaction;
return
end;
go
insert into Flight
values (304, 3, 1, 200192, 1, '20160916 09:00:00 AM');
Какие значения f.DepartureDateID, m.TargetEndDate и m.StartDate, является f.DepartureDateID действительно дата в том же формате, что и другие? – grom
Все они типа datetime. Я пытаюсь совершить полет в 2020 году, когда все мои запросы на обслуживание находятся в 2016 году, и я до сих пор получаю сообщение об ошибке запуска. – th30d0rab1e
2016-09-16 08: 30: 00.000 Начало - 2016-09-17 09: 30: 00.000 Конец. Дата запроса на обслуживание. Если я использую эту вставку на дату, все равно получите сообщение об ошибке. '20200916 09:00:00 AM' – th30d0rab1e