Oracle 8.x SQL Delete

Hallo zusammen

Es hat zwei Tabellen: A und B
Beide tabellen haben zwei Felder: X und Y
mit demselben Datentyp

Kann ich mit einem SQL-Statment in beiden Tabellen gleichzeitig je einen Record löschen, wenn ich eine Where Klausel verwende, welche in beiden Tabellen je ein Datensatz erfüllt?
Wenn es gehen sollte, was sind die Gründe das es doch nicht geht?

Grüsse Peter

Hi Peter,

wieso muss das EIN statement sein? Zwei hintereinander tun’s doch auch:

DELETE FROM A WHERE X = ;
DELETE FROM B WHERE Y = ;

Wo liegt das Problem?
ciao,
Bernhard

Du hast Recht, jedoch aus reiner Neugierde…
Hallo Bernhard

Du hast völlig recht - es ist eine akademische Frage. Ich weiss, dass ich mit Access solche Staments schon erfolgreich absetzte. Jedoch weigert sich Oracle 8.x das Statment auszuführen. In den Oracel - SQL Manuals, bzw. ANSI - SQL-Manuals fanden wir keine eindeutige Antwort…

Grüsse Peter :wink:

Du hast völlig recht - es ist eine akademische Frage. Ich
weiss, dass ich mit Access solche Staments schon erfolgreich
absetzte. Jedoch weigert sich Oracle 8.x das Statment
auszuführen. In den Oracel - SQL Manuals, bzw. ANSI -
SQL-Manuals fanden wir keine eindeutige Antwort…

Also der SQL-Standard läßt das definitiv nicht zu, in Oracle oder MSSQL habe ich sowas auch noch nie gesehen.

Theoretisch spricht aber glaube ich nichts dagegen, man könnte das wie einen Join machen, nur dass er eben die Datensätze auf die die Join-Bedingung zutrifft löscht.

Grüße, Robert

ANSI-SQL
Hallo Robert

Du sagst der ANSI-Standard lässt es definitiv nicht zu. Das war genau die Aussage die ich in insgesamt 7 Büchern zu ANSI-SQL suchte… Kann ich das irgendwo heraus zitieren oder mit einer Argumentation begründen?¨

Grüsse Peter :wink:)

Du sagst der ANSI-Standard lässt es definitiv nicht zu. Das
war genau die Aussage die ich in insgesamt 7 Büchern zu
ANSI-SQL suchte… Kann ich das irgendwo heraus zitieren oder
mit einer Argumentation begründen?¨

Die können in der Referenz oder in Büchern natürlich nicht schreiben was alles nicht geht, sondern nur was geht. Um also wirklich „definitiv“ sagen zu können müßte man in der ANSI-Referenz nachschauen, keine Ahnung obs die online gibt (mein INet versagt gerade ein bißchen, anscheinend hat mein ISP Troubles mit der Anbindung nach Amerika).

Aber die Sachen die ich schriftlich bei Hand habe (DB unabhängige Schulungsunterlagen und eine Oracle-SQL-Referenz) die beide in der Beschreibung des DELETE Statement angeben, dass man nur eine Tabelle oder View, wobei der View nicht über mehrere Tabellen gehen darf (das schreiben nur die Schulungsunterlagen), angeben darf.

Das ist zwar zugegebenermaßen kein „definitiv“, reicht aber für ein „sicher“. :smile:

Grüße, Robert

Perfekt - satt und glücklich :wink:) Peter
o.T.