Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Mehrere Datensätze von mehreren Tabellen löschen (https://www.delphipraxis.net/164980-mehrere-datensaetze-von-mehreren-tabellen-loeschen.html)

Bummi 9. Dez 2011 09:53

AW: Mehrere Datensätze von mehreren Tabellen löschen
 
ich gebs auf ....

Sir Rufo 9. Dez 2011 10:06

AW: Mehrere Datensätze von mehreren Tabellen löschen
 
Zitat:

Zitat von Bummi (Beitrag 1140479)
ich gebs auf ....

Ich versuche es noch mal ;)

Es geht um diesen Code (ich habe der Übersichtlichkeit mal den SQL als Parameter-Variante aufgeschrieben):
Code:
DELETE FROM Sendungsverfolgung WHERE Sendungsverfolgung_ID = :KundeID;
DELETE FROM Kunden WHERE Kunden_ID = :KundeID;
Wenn die Tabelle jetzt so definiert ist:
Code:
Sendungsverfolgung:
Sendungsverfolgung_ID (Primary Key) => ID der Sendungsverfolgung
Kunden_ID => Referenz zum Kunden
...
Müsste es nicht eher so sein:
Code:
DELETE FROM Sendungsverfolgung WHERE Kunden_ID = :KundeID;
DELETE FROM Kunden WHERE Kunden_ID = :KundeID;

Medium 9. Dez 2011 10:08

AW: Mehrere Datensätze von mehreren Tabellen löschen
 
Zitat:

Zitat von Impulz (Beitrag 1140471)
zum üben

Dann doch erst recht die saubere Variante üben! Du bekämst für einen Bruchteil des Aufwandes und weniger Zeilen Code die gleiche Funktionalität in robuster, sicherer, wartungsfreundlicher und erweiterungsoffener, zudem an strukturell sinnvollerer Stelle. Noch ein Vorteil: Du lernst gleich ein wenig das DBMS besser kennen, was insbesondere bei der Wartung bestehender Projekte verdammt praktisch werden dürfte. Ganz ehrlich, du tätest dir wirklich einen Gefallen, egal ob "zum üben" oder in einem echten Projekt. (Nichtzuletzt schleicht sich ja auch gerne mal gelerntes in Produktiveinsätzen ein ;P)

p80286 9. Dez 2011 13:45

AW: Mehrere Datensätze von mehreren Tabellen löschen
 
Zitat:

Zitat von Impulz (Beitrag 1140419)
es funktioniert nicht... kriege eine fehlermeldung. Obwohl ich Sendungsverfolgung_ID lösche steht da, das es nicht geht weil beim Kunden immer noch ein FK zu kunden besteht.

@Bummi
Nehmen wir zu seinen Gunsten an, daß er sich zwischen den ganzen Schlüsseln verlaufen hat. Da es nur ein Projekt zum Üben ist....
Hoffentlich gibt es einen Backup.

@Impulz
Wie wäre es, wenn Du uns mal die Tabellendefinition zeigst?
Dann ist die Hilfe u.U. etwas einfacher.

Gruß
K-H

Impulz 12. Dez 2011 06:11

AW: Mehrere Datensätze von mehreren Tabellen löschen
 
vielen Dank erstmal.
also erstmal zu dem code (um es nochmal zu erklärgen das sieht dann bei mir so aus:
Code:
 DELETE FROM RECHNUNGEN R WHERE R.Kunden_ID = :id';
das 'R' ist da entscheidend. ich meinte nicht Kunden_ID (aus der Kundentabelle) sondern den fk R.Kunden_ID (oder S kunden Id, was an dieser stelle egal ist)

Sir Rufo 12. Dez 2011 09:20

AW: Mehrere Datensätze von mehreren Tabellen löschen
 
Zitat:

Zitat von Impulz (Beitrag 1140908)
Code:
DELETE FROM RECHNUNGEN R WHERE R.Kunden_ID = :id';
das 'R' ist da entscheidend. ich meinte nicht Kunden_ID (aus der Kundentabelle) sondern den fk R.Kunden_ID (oder S kunden Id, was an dieser stelle egal ist)

Ich wüsste nicht wofür das R da gut sein sollte, IMHO ist das völlig egal, denn es sind keine weiteren Tabellen (mit gleichlaufenden Feldnamen im Spiel).

Darum muss das auch so funktionieren:
Code:
DELETE FROM RECHNUNGEN WHERE Kunden_ID = :id';

Impulz 12. Dez 2011 09:23

AW: Mehrere Datensätze von mehreren Tabellen löschen
 
grad schon, nur das ist ja nur ein auszug... das sieht so aus , dass Kunden ja Fks in 3 Tabellen haben...

diese müssen ja erst ALLE weg bevor man den kunden löscht
zb

Sendungsverfolgung---- Kunden
Rechnung---------"
Buecher----------"
und desshalb nutze ich da das s., r. und b.

so komme ich nicht durcheinander

Sir Rufo 12. Dez 2011 10:37

AW: Mehrere Datensätze von mehreren Tabellen löschen
 
Ich weiß zwar nicht, warum man hierbei durcheinander kommen kann/soll
Code:
DELETE FROM RECHNUNGEN WHERE Kunden_ID = :id;
DELETE FROM SENDUNGVERFOLGUNG WHERE Kunden_ID = :id;
DELETE FROM KUNDEN WHERE ID = :id;
aber da ist ja jeder in seiner eigenen Verwirrung gefangen ;)
Den SQL-Server verwirrt es auf jeden Fall schon mal gar nicht (und der braucht immer eine 100% eindeutige Referenzierung)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:58 Uhr.
Seite 4 von 4   « Erste     234   

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