AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQl Delete - löschen über mehrere Tabellen
Thema durchsuchen
Ansicht
Themen-Optionen

SQl Delete - löschen über mehrere Tabellen

Ein Thema von alex-91 · begonnen am 14. Jun 2010 · letzter Beitrag vom 14. Jun 2010
Antwort Antwort
alex-91

Registriert seit: 14. Apr 2010
44 Beiträge
 
#1

SQl Delete - löschen über mehrere Tabellen

  Alt 14. Jun 2010, 16:17
Datenbank: BDE • Version: Paradox 7 oder so ... • Zugriff über: k.a
Hallo ich bins wieder

Also folgendes:
Ich hab eine Haupttabelle mit Inventarnummern und eine Detailtabelle mit diversen Informationen( nicht relevant) die mit eben dieser Haupttabelle über ein fremdschlüsselfeld verbunden ist.

Nun soll der User die Inventarnummer in ein Edit eingeben und anahnd dieser Nummer soll der entsprechende datensatz mit den dazugehörigen details aus der Detailtabelle gelöscht werden.

Hab eine SQL Abfrage mit DELETE FROM
Delphi-Quellcode:
 
nummer:=Edit1.Text;
 Query1.Active:=false;
 Query1.SQL.Clear;
 Query1.SQL.Add('DELETE FROM Inventarnummern, Details WHERE Inventarnummer = "'+(nummer)+'" AND Details.ID = Inventarnummern.ID_Details');
 Query1.ExecSQL;
leider kommt dann eine fehlermeldung mit " ... invalid use of keyword token: , "
wenn ich das delete nur in der Tabelle Inventarnummern mache funktionierts, kann es sein dass das generell nur bei einer tabelle möglich ist ? kennt ihr andere lösungswege ?

lg alex-91
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: SQl Delete - löschen über mehrere Tabellen

  Alt 14. Jun 2010, 16:19
Geht so nicht. Eine Möglichkeit wäre eine Delete-Rule. Das wird aber bei Paradox nicht funktionieren.
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: SQl Delete - löschen über mehrere Tabellen

  Alt 14. Jun 2010, 16:27
Hallo,

unter Paradox musst du zuerst in der Detail-Tabelle löschen und dann in der Master,
wären also 2 SQL-Befehle.

Standard-Frage: Warum Pdx ?
Unter Firebird würde man einen Foreign Keys mit Cascade-Delete definieren ...


Heiko
Heiko
  Mit Zitat antworten Zitat
alex-91

Registriert seit: 14. Apr 2010
44 Beiträge
 
#4

AW: SQl Delete - löschen über mehrere Tabellen

  Alt 14. Jun 2010, 16:34
Hallo,

unter Paradox musst du zuerst in der Detail-Tabelle löschen und dann in der Master,
wären also 2 SQL-Befehle.

Standard-Frage: Warum Pdx ?
Unter Firebird würde man einen Foreign Keys mit Cascade-Delete definieren ...


Heiko
Foreign Keys ? cascade-delete ?
verwende Pdx weil ich in der schule nichts anderes gelernt habe, sind kein sonderlich umfangreicher informatik-zweig zum was anderes lernen/anschaun ist leider auch nicht wirklich zeit

das heißt also ich wähl den datensatz anhand der eingegebenen nummer aus, nehm das feld mit dem fremdschlüsselfeld, komm dadurch zum entsprechenden detail-datensatz, lösch diesen und dann den rest aus der haupttabelle ?

lg
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: SQl Delete - löschen über mehrere Tabellen

  Alt 14. Jun 2010, 18:08
Cascade Delete ist eine Delete Rule. Bei moderneren DBMS kann man angeben, was passiert wenn man einem Datensatz den Bezug wegnimmt.

Ein kaskadierendes Löschen bedeutet, dass abhängige Datensätze mitgelöscht werden ( gefährlich Regel). Andere Alternativen wären z.B. ein Standradbezug herzustellen.

Beispiel: Beim Löschen eines Kunden werden alle seine Rechnungen gelöscht in Folge auch alle Rechnungspositionen der Rechnungen.

FK steht für Foreign Key also Fremdschlüssel
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: SQl Delete - löschen über mehrere Tabellen

  Alt 14. Jun 2010, 18:22
Weiterführende Literatur dazu
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz