J'ai une base de données de vol avec plusieurs tables. J'essaye de faire un déclencheur pour refuser une insertion ou une mise à jour sur un vol qui a une demande de maintenance. Si l'avion est demandé pour l'entretien, il ne devrait pas y avoir de vol entre ces heures. Je reçois le message d'erreur très bien, mais il semble que je l'obtiens toujours. Comment venir? Merci d'avance, j'apprécie toujours l'aide.Déclenchement avec deux tables
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');
Quelles sont les valeurs de f.DepartureDateID, m.TargetEndDate et m.StartDate, est f.DepartureDateID vraiment une date dans le même format que les autres? – grom
Ce sont tous des types datetime. J'essaie de faire un vol en 2020, où toutes mes demandes de maintenance sont en 2016, et je reçois toujours mon message d'erreur de déclenchement. – th30d0rab1e
2016-09-16 08: 30: 00.000 Début - 2016-09-17 09: 30: 00.000 Fin. Est une date de demande de maintenance. Si j'utilise cette insertion sur une date, obtenez toujours le message d'erreur. '20200916 09:00:00 AM' – th30d0rab1e