DELETE kontrollieren

Guten Abend

Ich habe mal wieder ein kleines Problem mit meiner Datenbankarbeit.

Ich habe drei tabellen
FILE; LINK; KEY
in der Tabelle LINK sind die Primärschlüssel von Tabelle FILE und KEY als Fremdschlüssel definiert (FILEID,KEYID).
Ich möchte jetzt verhindern, dass ein KEY gelöscht wird welcher noch in der Tabelle LINK verwendet wird. Andersherum soll mir der KEY aber gelöscht werden wenn die ID in der Tabelle LINK gelöscht wird. zweites habe ich durch einen FOREIGN KEY (ON DELETE CASCADE)gelöst aber wie kann ich nun das erste Problem bewältigen.
Ich muss dazu sagen, ich bin mit den Funktionen und Triggern nicht so vertraut (bringe die nicht in meinen Schädel rein)
Währe überglücklich wenn jemand mir helfen könnte

THANKS

Inoup

hi,

wenn du das verhindern willst meinst du nicht ein CASCADE RESTRICT wäre besser?

cu tb.

hallo,

DELETE CASCADE Funkt schon richtig, das ist ja nicht das Problem! Das löscht mir den KEY in der Tabelle KEY wenn ich die KEYID aus der Tabelle LINK lösche. (kompliziert formuliert ich weiss ;-))

Das Problem besteht darin, dass wenn ich in der Tabelle KEY eine Zeile lösche ist in der Tabelle LINK die KEYID noch verwendet.

Nochmals zur besseren Verständlichkeit:
Tabelle Link
fileid FOREIGN KEY REFERENCES File(fileid)
keyid FOREIGN KEY REFERENCES Key(keyid)
Primary Key (fileid,keyid)

Tabelle Key
Keyid PRIMARY KEY
Key

Tabelle File
Fileid PRIMARY KEY
Name

Gruss

Hallo inoup

[quote=“inoup”]DELETE CASCADE Funkt schon richtig, das ist ja nicht das Problem! Das löscht mir den KEY in der Tabelle KEY wenn ich die KEYID aus der Tabelle LINK lösche. (kompliziert formuliert ich weiss ]
Den Syntax von DELETE CASCADE solltest Du Dir nochmals genau anschauen!


Im Syntax vom DELETE ist eine WEHRE-Klausel enthalten. Mit der kann man u. a. auch festlegen, unter welchen Bedinungen ein Datensatz in der referenzierten Tabelle gelöscht werden soll.



mfg

fristo