我想你還需要在你的sentence
表中的prisonerID
。
create table sentence
(id number,
prisonerID number,
fromDate date,
toDate date);
沒有它,很難確定你處理哪個囚犯的判決。 拒絕的標準是:
:NEW.toDate > fromDate AND
:NEW.FromDate < toDate
如果某些記錄由上述條件返回 - 插入應予駁回。標準來自於要求開始時間或結束時間不能在現有時間段內,並且他們不能包括這樣的時間段。打破這一部分 - 新的fromDate必須早於ToDate,而new toDate必須晚於fromDate。
create or replace trigger sentence_reject_existing
before insert
on sentence
for each row
declare
vCount NUMBER;
begin
select count(*)
into vCount
from sentence
where prisonerID = :NEW.prisonerID and
:NEW.Todate > fromDate and
:New.FromDate < toDate ;
if vCount > 0 then
raise_application_error(-20005,'Prisoner is already in prison');
end if;
end;