![]() |
[SQL] on delete cascade
Hi
ich habe schon gegoogelt aber nicht wirklich etwas brauchbares gefunden um das zu verstehen... Hat vielleicht jemand mal Beispiel oder einen Link wie das funktioniert, wenn ich mehrere Tabellen löschen will die in Abhängikeit voneinander sind? Thx Greets |
Re: [SQL] on delete cascade
Beispiel : Warengruppen und Artikel. Die Artikel haben Warengruppe als Foreign-Key. Ist "ON DELETE CASCADE" definiert und ich lösche eine Warengruppe, so sind automatisch auch alle Artikel, die diese Warengruppe haben gelöscht.
Es können also keine undefinierten Felder entstehen. Natürlich ist äußerste Vorsicht geboten !!! Es gibt auch noch ON UPDATE CASCADE usw. |
Re: [SQL] on delete cascade
Hi Hansa,
kannst du mir vielleicht Stück Quelltext zu dem geben was du geschrieben hast? Wie sollte das denn aussehen? Die Theorie ist mir klar nur die passende Syntax fehlt mir dazu :oops: Thx :thumb: Greets |
Re: [SQL] on delete cascade
Leider hast du nicht gesagt, welche DB du verwendest. Für IB/FB kann ich dir ein Bsp. geben.
Na gut, hier ist ein IB-Beispiel :
SQL-Code:
Ob dies sich jetzt 1:1 umsetzen läßt ?
/******************************************************************************/
/**** Generated by IBExpert 07.10.2004 20:29:59 ****/ /******************************************************************************/ SET SQL DIALECT 3; SET NAMES ISO8859_1; /******************************************************************************/ /**** Tables ****/ /******************************************************************************/ CREATE TABLE ART ( ID INTEGER, ID_WG INTEGER, NR INTEGER, BEZ INTEGER ); /******************************************************************************/ /**** Foreign Keys ****/ /******************************************************************************/ ALTER TABLE ART ADD CONSTRAINT FK_ART FOREIGN KEY (ID_WG) REFERENCES WG8 (ID) ON DELETE CASCADE; /******************************************************************************/ /**** Privileges ****/ /******************************************************************************/ |
Re: [SQL] on delete cascade
Hi Hansa,
ich benutze MS SQL Server 2000 und greife mit ADO darauf zu... ich muß die "on delete cascade" Anweisung nach dem erstellen der Tabelle, der Tabelle mitgeben? :gruebel: Ich dachte ich könnte das irgndwann zur Laufzeit machen... :?: Etwa so...
SQL-Code:
SELECT * FROM TABLE1
WHERE TABLE1_ID = TABLE2_TABLE1_ID ON DELETE CASCADE Greets |
Re: [SQL] on delete cascade
@Mike:
Ein Delete Cascade hat nichts mit einer Select Anweisung zu tun, damit du das richtig verstehst. Es geht lediglich darum, wenn du einen Masterecord löscht, daß keinen Detailleichen übrig bleiben. Noch ein Beispiel: Eine Firma hat Kunden, und verkauft Artikel... Die Artikel gelangen auf die Rechnung... Somit hast du 3 Tabellen: Kunden, Artikel, Rechnungen. Jetzt stell dir vor der Kunde X hat bereits 100 mal dort was gekauft, somit existieren hundert Einträge in der Tabelle Rechnungen, die auf den Kunden X verweisen. Was passiert nun, wenn du aus der Tabelle Kunden den Kunden X löschst. Da bietet dir MSSQL prinzipiell 2 Möglichkeiten:
PS: Nicht alle DBMS bieten verschachteltes Löschen an, aber MSSQL tuts. |
Re: [SQL] on delete cascade
Hi Tom
Genau das ist das was ich wissen wollte :thumb: :thumb: :thumb: :thumb: Jetzt ist mir das auch klar wie ich das machen muß! Großen Dank Greets :cheers: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz