Announcement

Collapse
No announcement yet.

On delete restrict & on update cascade

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • On delete restrict & on update cascade

    Hallo alle zusammmen. Ich habe lange gegoogelt, hab aber nichts besonderes über "on update cascade und on delete restrict" gefunden.
    Könntet ihr mir die Wirkungsweise der beiden Klauseln ON DELETE RESTRICT sowie ON UPDATE CASCADE am Beispiel der unten angegebenen Tabellen erkären, damite ich es besser verstehe.
    Vielen dank im voraus

    CREATE TABLE Auftraege (
    Auftr_Nr INTEGER PRIMARY KEY,
    Auftr_Dat DATE DEFAULT CURRENT DATE,
    Empfaenger CHAR(50) );

    CREATE TABLE Auftragspositionen (
    Auftragsnr INTEGER,
    Position SMALLINT,
    Bezeichnung CHAR (80),
    Einzelpreis MONEY,
    Menge SMALLINT,
    PRIMARY KEY (Auftragsnr, Position),
    FOREIGN KEY (Auftragsnr) REFERENCES Auftrage
    ON UPDATE CASCADE
    ON DELETE RESTRICT);

  • #2
    Hi,

    das ist relativ einfach. ON DELETE RESTRICT bedeutet, dass ein Eintrag in Auftraege nicht gelöscht werden kann, solange ein oder mehrere zugehörige Sätze in Auftragspositionen existiert. Das ist der Default. Es gibt auch noch ON DELETE CASCADE, welches bewirkt, dass das Löschen eines übergeordneten Satzes auch alle untergeordneten Sätze löscht.

    Die Verwendung von ON UPDATE CASCADE zeugt von mangelndem Verständnis einer Primary - Foreign Key Vernküpfung. Ein PK soll(muss) so gewählt werden, dann es nie, nie, nie dazu kommt das er per Update Befehl geändert wird. Falls doch, würde ON UPDATE CASCADE dafür sorgen, dass auch die FK Spalte angepasst würde.

    Aber wie gesagt, dass kommt nicht vor wenn man es richtig macht. Insofern solltest Du ON UPDATE CASCADE aus deinem (Datenbank) Wortschatz streichen.

    Dim
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment


    • #3
      Vielen Dank dimitri.
      Jetzt habe ich alles verstanden

      Comment

      Working...
      X