Hi!
Ich bin absoluter Anfänger was DB Programmierung betrifft und hätte folgende Grundsatzfrage:
Ich suche eine Möglichkeit, mit der ich verhindern kann, dass ein Tupel aufgrund einer Exists/Not Exists Bedingung gelöscht wird:
Beispiel:
Relation Kunde
Relation Rechnung
Rechnungempfänger als Fremdschlüssel in Rechnung referenziert Kundennr in Kunde
Ich würde jetzt gerne, wenn die Abfrage
NOT EXISTS
(
SELECT * FROM Kunde k, Rechnung r
WHERE k. kundenNr =r.empfänger
);
true ist, das löschen erlauben, sonst nicht.
(Also Kunde darf nur gelöscht werden, wenn es keine zu ihm gehörende Rechnung gibt)
Stell ich das am Besten mit einem Trigger an??
Bei einer Assertion ist mir im Gegensatz nicht klar, wie ich die Bedingung rein an das Löschen eines Tupels knüpfe, da, so wie ich es verstanden habe, Create Assertion ja ebenso für Einfügen und Update gilt bzw überprüft wird.
Pls Help!
Ich bin absoluter Anfänger was DB Programmierung betrifft und hätte folgende Grundsatzfrage:
Ich suche eine Möglichkeit, mit der ich verhindern kann, dass ein Tupel aufgrund einer Exists/Not Exists Bedingung gelöscht wird:
Beispiel:
Relation Kunde
Relation Rechnung
Rechnungempfänger als Fremdschlüssel in Rechnung referenziert Kundennr in Kunde
Ich würde jetzt gerne, wenn die Abfrage
NOT EXISTS
(
SELECT * FROM Kunde k, Rechnung r
WHERE k. kundenNr =r.empfänger
);
true ist, das löschen erlauben, sonst nicht.
(Also Kunde darf nur gelöscht werden, wenn es keine zu ihm gehörende Rechnung gibt)
Stell ich das am Besten mit einem Trigger an??
Bei einer Assertion ist mir im Gegensatz nicht klar, wie ich die Bedingung rein an das Löschen eines Tupels knüpfe, da, so wie ich es verstanden habe, Create Assertion ja ebenso für Einfügen und Update gilt bzw überprüft wird.
Pls Help!