Tabellenübegreifendes DELETE möglich?

kossy

Bekanntes Mitglied
Hallo !

Ich habe eine Frage zum Thema SQL. Ist es möglich, eine tabellenübergreifende SQL DML Anweisung (also quasi mehrere Tabellen auch einmal bzw. in einer einzigen Anweisung) mittels DELETE, UPDATE oder INSERT abzusetzen und so Daten in unterschiedlichen Tabellen zu manipulieren bzw. zu verändern? Also z.B. so etwas:

SQL:
DELETE 
FROM tabelle_1, tabelle_2
WHERE (--irgendeine Bedingung)

Mein SQL Developer zeigt mir hier jedenfalls einen Syntaxfehler an. Oder muss ich solche Anweisungen step by step nacheinander in der richtigen semantischen Reihenfolge durchführen?

Was ich bereits heruasgefunden habe ist, dass man in einer DELTE Anweisung keine Joins nutzen kann (höchsten um mir über ein Subselect in der WHERE Klausel Daten aus einer anderen Tabelle zu holen.

Grüße
Kossy
 

Guybrush Threepwood

Top Contributor
Ich nehme an, dass Du bei Deinem konkreten Fall den Befehl für jede Tabelle einzeln geben musst, AFAIK.

Anderen Möglichkeit: Du kannst den Befehl ON DELETE CASCADE verwenden. Nehmen wir an, Du hast eine Tabelle Person und eine Tabelle PersonenWasweißichdatensätze (Tabelle 2). Wenn die Datensätze in Tabelle 2 mit Datensätzen aus Tabelle 1 verknüpft sind, und in Tabelle 1 ein Datensatz gelöscht wird, dann werden auch die zugehörigen Datensätze aus Tab. 2 entfernt. Meinst Du so etwas in der Art?
 

kossy

Bekanntes Mitglied
Hallo Guybrush !

Ja genua so etwas meinte ich im Prinzip. Sehe ich das richtig, dass ich mit einer ALTER TABLE Anweisung nachträglich meine Datenbanktabellen anpassen muss, um ein solches ON DELETE CASCADE durchführen zu können?

Oder könnte ich ein solche ON DELETE CASCADE auch in einer DELTE Anweisung selbst einbauen.

Grüße
Kossy
 
T

Tomate_Salat

Gast
Such mal nach "Foreign keys". Damit kannst du Tabellen verknüpfen (wie Guybrush angedeutet hat) und kannst eben auch dieses ON DELETE CASCADE verwenden.
 
N

nillehammer

Gast
Ja genua so etwas meinte ich im Prinzip. Sehe ich das richtig, dass ich mit einer ALTER TABLE Anweisung nachträglich meine Datenbanktabellen anpassen muss, um ein solches ON DELETE CASCADE durchführen zu können?
Ja, das ON DELETE CASCADE muss entweder bei der Erstellung der Tabellen (und hier speziell der Foreign Key Constraints) angegeben werden oder eben nachträglich mit ALTER TABLE.
 

Guybrush Threepwood

Top Contributor
Hier ein kleines Beisiel aus einem meiner Projekte: Person ist die eine Tabelle und Testsession enthält spezifischere Datensätze zu Person. Die SQL-Syntax bezieht sich auf die Erstellung der Tabelle (für H2-Datenbank):
SQL:
/*
* Generate table layout for person table
*
*
*/
CREATE TABLE IF NOT EXISTS PERSON
(
PERSONID IDENTITY PRIMARY KEY,
FIRSTNAME VARCHAR(100),
LASTNAME VARCHAR(100) NOT NULL,
BIRTHYEAR SMALLINT NOT NULL,
BIRTHMONTH SMALLINT NOT NULL,
BIRTHDAY SMALLINT NOT NULL,
COMMENTS VARCHAR(2000),
SEX SMALLINT NOT NULL,
PARENTS VARCHAR(250),
MODIFICATION BIGINT NOT NULL
)


/*
* Generate table layout for testsession table
*
*
*/
CREATE TABLE TESTSESSION IF NOT EXISTS
(
TESTSESSIONID IDENTITY,
PERSONID BIGINT NOT NULL,
TESTYEAR SMALLINT NOT NULL,
TESTMONTH SMALLINT NOT NULL,
TESTDAY SMALLINT NOT NULL,
AGEYEAR SMALLINT,
AGEMONTH SMALLINT,
AGEDAY SMALLINT,
LANG SMALLINT,
DURATION SMALLINT,
TESTERNAME VARCHAR(100),
DOMICILE VARCHAR(100),
REMARKS VARCHAR(2000),
REASON VARCHAR(2000),
MODIFICATION BIGINT NOT NULL,
PRIMARY KEY(TESTSESSIONID, PERSONID),
CONSTRAINT FOREIGNCONSTRAINT FOREIGN KEY(PERSONID) REFERENCES PERSON(PERSONID) ON DELETE CASCADE)
)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S CrudRepository bulk delete Datenbankprogrammierung 2
E Was bedeutet die Konsistenzbedingung "ON DELETE RESTRICT"? Datenbankprogrammierung 6
A Eclipse + Derby + Delete Row Datenbankprogrammierung 3
K Db4o Delete Problem Datenbankprogrammierung 11
alex_fairytail MySQL SQL Statement Delete zwischen Datum1 und Datum2 Datenbankprogrammierung 5
S HSQLDB DELETE-Statement funktioniert nicht Datenbankprogrammierung 4
M Mysql Delete ohne Where Klausel untersagen Datenbankprogrammierung 8
T DB2 delete/update über 2 Tabellen Datenbankprogrammierung 2
M DELETE FROM via Java Datenbankprogrammierung 7
V Delete From Tabelle, ohne vorher die Tabelle zu kennen Datenbankprogrammierung 5
Z DELETE-Statement Datenbankprogrammierung 6
C delete Datenbankprogrammierung 8
-MacNuke- Hibernate Bi-Directional delete Datenbankprogrammierung 3
B MySql DELETE Anweisung gibt Fehler zurück Datenbankprogrammierung 7
D Delete Befehl will irgendwie nicht Datenbankprogrammierung 8
D Brauche hilfe bei Delete mit Datum! Datenbankprogrammierung 4
A delete aus datenbank, funktioniert nicht so richtig Datenbankprogrammierung 10
G Problem mit Delete-Statement Datenbankprogrammierung 3
M Datenbank Zugraff nach Umwandlung in .jar-Datei nicht mehr möglich Datenbankprogrammierung 4
raptorrs Plötzlich keine Verbindung zur Datenbank mehr möglich Datenbankprogrammierung 14
krgewb getDouble auch mit null möglich? Datenbankprogrammierung 2
V keine Verbindung möglich (Access-DB) Datenbankprogrammierung 3
B JPA -> Dynamische WHERE Clause / SQL Injection möglich? Datenbankprogrammierung 11
F MySQL JPA History Policy möglich? Datenbankprogrammierung 0
D SQLite Datenkbank auf WebServer möglich? Datenbankprogrammierung 4
H Derby: SYSCS_UTIL.SYSCS_EXPORT_QUERY mit String Abfrage in wehre-Klausel nicht möglich Datenbankprogrammierung 3
S Verbindungsaufbau zu MySql Datenbank nicht möglich Datenbankprogrammierung 3
G JDBC Connect nur über SID fehlerfrei möglich Datenbankprogrammierung 2
serjoscha MySQL Eine Instanz von eigenem DBWrapper -> Fehler durch mehrfachbenutzung möglich? Datenbankprogrammierung 2
T 2 Elterntabellen auf1 Kindtabelle möglich? Datenbankprogrammierung 5
T SQL-Statement Feld von Fremdschlüsseln als Spalte möglich? Datenbankprogrammierung 4
A Nach Export mysql Verbindung zur Datenbank nicht möglich, was tun? Datenbankprogrammierung 7
D Derby Datenbank bei Export zu JAR-Datei nicht möglich Datenbankprogrammierung 8
D SQL Update auf eine Query möglich? Datenbankprogrammierung 4
J Java - JDBC Verbindung zur Datenbank nicht möglich Datenbankprogrammierung 10
Kenan89 Keine Datenbankverbindung möglich Datenbankprogrammierung 52
K Connection - möglich & nicht möglich Datenbankprogrammierung 2
Rudolf Peristenz in JAR möglich? Datenbankprogrammierung 8
Y @ManyToMany Sequence angeben möglich Datenbankprogrammierung 3
M DB-Verbindung zu DB in Projektordner möglich? Datenbankprogrammierung 17
C Keine Verbindung zu HSQLDB möglich Datenbankprogrammierung 22
B MySQL-Verbindung ausschließlich zu localhost möglich Datenbankprogrammierung 7
E jdbc Verbindung ohne Einrichten einer DSN möglich ? Datenbankprogrammierung 3
B ResultSet aus Session geladen, aber kein Zugriff möglich Datenbankprogrammierung 6

Ähnliche Java Themen


Oben