Zitat von
hoika:
Hallo,
hm, und wie würde der aussehen ?
Sorry, aber ich ärgere mih damit schon seit langem rum,
immer wieder kommen Fehler, also dass wieder eine Überlappung auftritt. ;(
Heiko
Nehmen wir an, die Tabelle heisst Buchung:
1.
Exception:
CREATE EXCEPTION E_INVALIDDATERANGE '';
2. Trigger:
SQL-Code:
CREATE TRIGGER BUCHUNG_BIU0
FOR BUCHUNG
ACTIVE BEFORE
INSERT OR UPDATE POSITION 0
as
declare variable ueberlappung
char(1);
begin
/*
Datumsbereich prüfen
*/
select
case
when
exists(
select *
from buchung
where (new.startdate
between startdate
and enddate)
or
(new.enddate
between startdate
and enddate))
then
'
T'
else
'
F'
end
from rdb$
database into :ueberlappung;
if (:ueberlappung = '
T')
then
exception e_invaliddaterange '
Überlappender Datumsbereich';
end
[EDIT]Die beiden Datumsfelder sollten dabei indexiert sein![/EDIT]
Cu, Frank