Thread View: de.comp.datenbanken.mysql
5 messages
5 total messages
Started by Fabian
Thu, 04 May 2023 16:21
Aus 2 mach 1?
Author: Fabian
Date: Thu, 04 May 2023 16:21
Date: Thu, 04 May 2023 16:21
39 lines
1291 bytes
1291 bytes
Hallo Leute, gibt es eine Möglichkeit, mehrere SQL-Befehle in einem einzigen Befehl unterzubringen? Beispiel: In einer Datenbank gibt es zwei Tabellen. Tabelle 1 für Personenstammdaten Tabelle 2 für weitergehende Daten Personenstammdaten z. B. Name, Vorname, Straße, PLZ und Ort weitergehende Daten z. B. Geburtsdatum, Bankverbindung, familienstand Bisherige SQL-Befehle: INSERT INTO tabelle1 VALUES(ID, name, vorname, strasse, plz, ort) und INSERT INTO tabelle2 VALUES(ID, geburtsdatum, bankverbindung, familienstand) Es wurden 2 Tabellen genutzt, weil ein User nur die Daten der Tabelle1 sehen darf und ein anderer User die Daten beider Tabellen (ist nicht auf meinen Mist gewachsen). Immer, wenn ein neuer Eintrag hinzugefügt wird, bedarf es aber nun 2 SQL-Befehle. Gibt es eine Möglichkeit, beide SQL-Befehle in einem Befehl unterzubringen? Vielleicht in etwa so? INSERT INTO tabelle1 VALUES(ID, name, vorname, strasse, plz, ort), INTO tabelle2 VALUES(ID, geburtsdatum, bankverbindung, familienstand) Das war jetzt nur exemplarisch, in der Realität handelt es sich sogar um 4 Tabellen, also 4 SQL-Befehle beim Hinzufügen eines neuen Eintrages. Hat jemand eine Idee, außer alle Tabellen neu zu strukturieren und nur eine Tabelle daraus zu machen? 'Gruß Heiko
Re: Aus 2 mach 1?
Author: "Peter J. Holzer
Date: Thu, 04 May 2023 18:05
Date: Thu, 04 May 2023 18:05
44 lines
1418 bytes
1418 bytes
On 2023-05-04 14:21, Fabian <fabi1969@mail.net> wrote: > gibt es eine Möglichkeit, mehrere SQL-Befehle in einem einzigen Befehl > unterzubringen? > > Beispiel: > In einer Datenbank gibt es zwei Tabellen. > Tabelle 1 für Personenstammdaten > Tabelle 2 für weitergehende Daten > > Personenstammdaten z. B. Name, Vorname, Straße, PLZ und Ort > weitergehende Daten z. B. Geburtsdatum, Bankverbindung, familienstand > > Bisherige SQL-Befehle: > > INSERT INTO tabelle1 VALUES(ID, name, vorname, strasse, plz, ort) > und > INSERT INTO tabelle2 VALUES(ID, geburtsdatum, bankverbindung, familienstand) > > > Es wurden 2 Tabellen genutzt, weil ein User nur die Daten der Tabelle1 > sehen darf und ein anderer User die Daten beider Tabellen (ist nicht auf > meinen Mist gewachsen). Durchaus eine sinnvolle Organisation. > Immer, wenn ein neuer Eintrag hinzugefügt wird, bedarf es aber nun 2 > SQL-Befehle. Ja, und? Wo ist das Problem? > Gibt es eine Möglichkeit, beide SQL-Befehle in einem Befehl > unterzubringen? Ich würde das nicht machen. Ich sehe keinen Vorteil darin, zwei Tabellen mit einem Befehl zu befüllen. Wenn es Dir um Atomizität geht: Dafür sind Transaktionen da. In PostgreSQL könnte man ein INSERT ... RETURNING in einer WITH-Clause unterbringen. So wie ich die Doku verstehe, ist da bei MySQL aber nur SELECT erlaubt. Bleibt IMHO nur die Möglichkeit, eine Stored Procedure zu schreiben. hp
Re: Aus 2 mach 1?
Author: Andreas Horn
Date: Wed, 10 May 2023 09:32
Date: Wed, 10 May 2023 09:32
27 lines
1461 bytes
1461 bytes
Am 04.05.23 um 18:05 schrieb Peter J. Holzer: > On 2023-05-04 14:21, Fabian <fabi1969@mail.net> wrote: >> gibt es eine Möglichkeit, mehrere SQL-Befehle in einem einzigen Befehl >> unterzubringen? >> Tabelle 1 für Personenstammdaten >> Tabelle 2 für weitergehende Daten >> INSERT INTO tabelle1 VALUES(ID, name, vorname, strasse, plz, ort) >> INSERT INTO tabelle2 VALUES(ID, geburtsdatum, bankverbindung, familienstand) >> Es wurden 2 Tabellen genutzt, weil ein User nur die Daten der Tabelle1 >> sehen darf und ein anderer User die Daten beider Tabellen Kannst du durch 2 verschiedene SELECT in einer Tabelle machen > Stored Procedure schreiben ist noch eine Möglichkeit bei 2 Tabellen. Ich hatte mal ein ähnliches Problem beim Zugriff über html. Dort habe ich before und after Trigger geschrieben und ein Zählfeld eingerichtet, da über den Webbrowser nicht gesichert war, dass folgendes Problem auftritt: - 1. user öffnet einen Datensatz und wartet - 2. user öffnet denselben Datensatz und ändert ihn - 1. user berschreibt jetzt diesen Datensatz Damit ist die Änderung durch den 2. user weg... Mit einem before Trigger kannst du den Zähler auslesen und wenn du schreibst den Zähler auf den alten Wert prüfen. hat er sich nicht geändert schreibst du mit dem after Trigger und inkrementierst den Zähler gleichzeitig. Falls der Zähler nicht mehr de alten Wert hat, wird das Schreiben mit einer geeigneten Fehlermeldung abgebrochen. LG Andreas
Re: Aus 2 mach 1?
Author: "Peter J. Holzer
Date: Thu, 11 May 2023 00:55
Date: Thu, 11 May 2023 00:55
18 lines
879 bytes
879 bytes
On 2023-05-10 07:32, Andreas Horn <andreas@andreashorn.de> wrote: > Am 04.05.23 um 18:05 schrieb Peter J. Holzer: >> On 2023-05-04 14:21, Fabian <fabi1969@mail.net> wrote: >>> gibt es eine Möglichkeit, mehrere SQL-Befehle in einem einzigen Befehl >>> unterzubringen? >>> Tabelle 1 für Personenstammdaten >>> Tabelle 2 für weitergehende Daten >>> INSERT INTO tabelle1 VALUES(ID, name, vorname, strasse, plz, ort) >>> INSERT INTO tabelle2 VALUES(ID, geburtsdatum, bankverbindung, familienstand) >>> Es wurden 2 Tabellen genutzt, weil ein User nur die Daten der Tabelle1 >>> sehen darf und ein anderer User die Daten beider Tabellen > Kannst du durch 2 verschiedene SELECT in einer Tabelle machen 1. Wie macht man (in MySQL) ein INSERT mit einem SELECT? 2. Er will ja nur eine Query haben. Zwei SELECTs sind für ihn also keine Verbesserung gegenüber zwei INSERTs. hp
Re: Aus 2 mach 1?
Author: Andreas Horn
Date: Fri, 12 May 2023 12:00
Date: Fri, 12 May 2023 12:00
28 lines
1093 bytes
1093 bytes
Hallo Peter, ich wollte ja nur auf die Verwendbarkeit von Triggern aufmerksam machen, damit gehen extrem viele Dinge. LG Andreas Am 11.05.23 um 00:55 schrieb Peter J. Holzer: > On 2023-05-10 07:32, Andreas Horn <andreas@andreashorn.de> wrote: >> Am 04.05.23 um 18:05 schrieb Peter J. Holzer: >>> On 2023-05-04 14:21, Fabian <fabi1969@mail.net> wrote: >>>> gibt es eine Möglichkeit, mehrere SQL-Befehle in einem einzigen Befehl >>>> unterzubringen? >>>> Tabelle 1 für Personenstammdaten >>>> Tabelle 2 für weitergehende Daten >>>> INSERT INTO tabelle1 VALUES(ID, name, vorname, strasse, plz, ort) >>>> INSERT INTO tabelle2 VALUES(ID, geburtsdatum, bankverbindung, familienstand) >>>> Es wurden 2 Tabellen genutzt, weil ein User nur die Daten der Tabelle1 >>>> sehen darf und ein anderer User die Daten beider Tabellen >> Kannst du durch 2 verschiedene SELECT in einer Tabelle machen > > 1. Wie macht man (in MySQL) ein INSERT mit einem SELECT? > > 2. Er will ja nur eine Query haben. Zwei SELECTs sind für ihn also keine > Verbesserung gegenüber zwei INSERTs. > > hp >
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads