![]() |
Datenbank: Firebird • Version: 2.5.3 • Zugriff über: IBO
Daten in Untertabelle löschen
Hallo,
ich möchte Daten aus einer Untertabelle Datensätze löschen wozu es im der Haupttabelle keinen Eintrag mehr gibt. Hat jemand einen passenden SQL Befehl. |
AW: Daten in Untertabelle löschen
ungefähr so:
delete from where not exists (select ....) |
AW: Daten in Untertabelle löschen
Sind das denn keinen "richtigen" Fremdschlüssel in der Detailtabelle? Normalerweise ist das nicht so einfach möglich, es sei denn, die Löschregel heißt "SET NULL", dann muss man nur die löschen, wo der Fremdschlüssel NULL ist.
|
AW: Daten in Untertabelle löschen
Also das sind 2 Tabellen wo es in der Untertabelle keinen Fremd Schlüssel zu gibt, diesen will ich jetzt einfügen. Dabei habe ich festgestellt das es Daten in der Untertabelle gibt aber keinen Datensatz in der Haupttabelle. Die sind Müll und müssen weg.
|
AW: Daten in Untertabelle löschen
Versuch es mal so:
SQL-Code:
DELETE FROM
Detailtabelle WHERE FK-Feld NOT IN ( SELECT PK-Feld FROM Haupttabelle ) |
AW: Daten in Untertabelle löschen
Danke DeddyH hat bestens geklappt. Spart mir viel Arbeit. :hello:
|
AW: Daten in Untertabelle löschen
Anzumerken wäre noch, daß man entweder die Tabellen oder die DB-Anwendung so gestaltet, daß beim Löschen von Records in der Haupttabelle automatisch die zugehörigen Records der Sub-Tabelle gelöscht werden.
|
AW: Daten in Untertabelle löschen
Oder das Löschen nur/erst erlaubt wenn keine Detaildatensätze mehr existieren.
|
AW: Daten in Untertabelle löschen
Oder sowas Abartiges wie RI benutzt
|
AW: Daten in Untertabelle löschen
Zitat:
|
AW: Daten in Untertabelle löschen
Tja, darauf hatte ich mich auch bezogen.
|
AW: Daten in Untertabelle löschen
YEIN - ich dachte ihr meint etwas anderes, denn etwas erlauben oder etwas von der DB automatisch erledigen lassen ist nicht das Selbe. Wie dem auch sei, ironisch hab ich das jedenfalls nicht gemeint. Sorry, wenn das so rüber gekommen ist.
|
AW: Daten in Untertabelle löschen
Nee, wir meinten schon alle dasselbe (was ich mit "richtigen" Fremdschlüsseln umschrieben habe, also RI).
|
AW: Daten in Untertabelle löschen
[KeineIronie]Na gut, dass diese wichtige Technik so häufig genannt wurde!
[/KeineIronie] Zitat:
Referentielle Integrität ist toll und einer der wichtigen Gründe, eine Datenbanksoftware einzusetzen, die das bietet. |
AW: Daten in Untertabelle löschen
!Friede!
Jetzt prügelt Euch doch nicht, nur weil irgendein Datenbankkaiser wieder mal seine neuen Klamotten ausgeführt hat. Gruß K-H @Jobo Zitat:
Code:
RI=on
|
AW: Daten in Untertabelle löschen
Wir haben uns doch alle lieb :kiss:
|
AW: Daten in Untertabelle löschen
Zitat:
![]() |
AW: Daten in Untertabelle löschen
Hach und wie wir uns lieb haben!
"Seid großartig zueinander" (oder: "So kannst Du mit uns doch nicht umgehen") Als ich das las, dachte ich, da haben sich aber alle zusammengetan gegen den Chef und siehe da, der meint angeblich: "mal schaun wie das funktioniert" @p80286 Mehrheitlich findet es offenbar vor allem und ausschließlich im Kopf des Programmierers statt. Gute Gedanken und Vorsätze sind aber leider in der Realität wirkungslos. Dabei ist die echte Syntax für RI=on nur unwesentlich aufwändiger und funktioniert. :) |
AW: Daten in Untertabelle löschen
Ich würde auch nicht auf die Möglichkeiten, welches ein modernes DBMS in diese Richtung bietet, verzichten wollen.
Es gibt aber andere die Berechnen, wieviel Zeit sie dafür verplempern |
AW: Daten in Untertabelle löschen
Ich kenne auch div. Software-Pakete, die gänzlich auf RI verzichten. Das kann gut gehen, muss es aber nicht.
|
AW: Daten in Untertabelle löschen
Manchmal hat man ja sehr Glück.
|
AW: Daten in Untertabelle löschen
[OT]
(zugegeben, ist jetzt auch irgendwie zu spät) Zitat:
Ich verplemper die Zeit im DB Bereich allenfalls damit, die Lizenzbestimmung, Optionsmöglichkeiten und Hardwarelimits und resultierende Kosten für bestimmte Oracle DB Versionen zu verstehen (oder sonstige Verwaltungsorgien mit denen) Oder meinst Du die nosql Fraktion? [/OT] @RI=off: Hab ich in "großem Stil" mal bei einer TKAnlagen Software gesehen. Schätze das ist eher Obfuscation, vielleicht auch bissl Performance. Solange es eine einheitliche (vlt sogar zentrale) "Schreibtechnologie" gibt, stehen m.E. die Chancen für die Integrität ganz gut. |
AW: Daten in Untertabelle löschen
Ich bezieh mich hier auf einen anderen Beitrag, in dem fehlende RI mit dem Zeitbedarf/Kosten für deren Anlage unf Pflege begründet wurde. Ich würde, wie schon erwähnt nicht darauf verzichten.
|
AW: Daten in Untertabelle löschen
Ach so, ich erinnere mich glaub ich sogar dunkel daran.
Vermutlich arbeiten hier viele an Systemen, die klassisch C/S sind und wo nur ein (Delphi)Programm gegen den Server arbeitet. Da kann man das vielleicht noch am ehesten vertreten. Trotzdem scheint es mir irgendwie verschenkt. |
AW: Daten in Untertabelle löschen
Ich durfte mal ein System betreuen mit RI=off, als die Daten auf ein neues System umziehen mußten, tauchten dann Datenfragmente auf, die es schon gar nicht mehr geben durfte. Soviel Performance oder was auch immer konnte nicht eingespart werden, wie wir hinterher für den Datencheck investieren mußten.
Wahrscheinlich könnt Ihr euch denken wie ich zu Softwarehäusern stehe, die hier clever agieren. Gruß K-H P.S. natürlich sind Datenänderungen durch die Hintertür damit nicht mehr ganz einfach, aber das nehme ich dann gerne in Kauf. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 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