ich versuche, möglichst viel Intelligenz in das Data Dictionary auszulagern. Z.B. funktioniert dies bei der Prüfung der Datenkonsistenz von 1:n-Verknüpfungen mit RIs (Referenzielle Integritäten) hervorragend.
Jetzt habe ich einen etwas komplizierteren Fall: bei Angeboten wird der Kopf und die zugehörigen Positonen in zwei Tabellen gespeichert:
Angebot: AngId,...
AngebotPos: AngPId,AngId,AngPNr,...
Die Angebotspositionen eines Angebots sollen mittels des Feldes AngPNr eindeutig durchnummeriert werden. Z.B.
Erstes Angebot mit 2 Positionen:
Ang:
AngId=123
zugehörige Positionen:
AngP:
AngPId=1234,AngId=123,AngPNr=1
AngPId=1235,AngId=123,AngPNr=2
Jetzt darf aber nicht eine weitere Position mit AngPNr=2 gespeichert werden:
AngPId=1236,AngId=123,AngPNr=3
Wie kann ich das im DD verhindern? Hier habe ich einen Trigger (before insert) Ansatz geschrieben:
Code: Alles auswählen
declare lResult logical;
declare nAngId integer;
declare nAngPId integer;
declare nAngPNr integer;
set nAngId = (select AngId from __New);
set nAngPId = (select AngPId from __New);
set nAngPNr = (select AngPNr from __New);
set lResult = 0 = (select count(*) from AngebotPos where AngId = nAngId and
AngPId <> nAngPId and
AngPNr = nAngPNr);