我有一个有多个表的航班数据库。我试图做出触发条件,拒绝在有维护请求的航班上插入或更新。如果要求维修飞机,则在这些时间之间不应有飞行。我得到的错误信息很好,但似乎我总是得到它。怎么来的?在此先感谢,我总是感谢帮助。触发两张表
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
他们都是日期时间类型。我试图在2020年完成一次航班,我的所有维护请求都是在2016年,而且我仍然收到了我的触发器错误消息。 – th30d0rab1e
2016-09-16 08:30:00.000开始 - 2016-09-17 09:30:00.000结束。是维护请求日期。如果我在日期中使用此插入,仍然会收到错误消息。 '20200916 09:00:00 AM' – th30d0rab1e