Entwickler-Ecke

Datenbanken - mehrere INSERT s zusammenfassen


bbfan - Fr 21.04.06 10:35
Titel: mehrere INSERT s zusammenfassen
Hallo Leute!

Wie kann ich mehrere INSERT zu einem zusammenfügen?




SQL-Anweisung
1:
2:
3:
INSERT INTO (TAB1,TAB2) VALUES (1,2);
INSERT INTO (TAB1,TAB2) VALUES (1,2);
INSERT INTO (TAB1,TAB2) VALUES (1,2);


sollte nachher wie folgt aussehen:

SQL-Anweisung
1:
INSERT INTO (TAB1,TAB2) VALUES (1,2),(1,2),(1,2);                    


Jedefalls geht das so mit mySQL. Aber wie sieht das bei ADO / msSQL aus?

Viele Grüße!


alzaimar - Fr 21.04.06 11:40

So geht das nicht. Auch mit mySQL nicht, denke ich, denn Du hast die Tabelle vergessen, aber egal. :wink:
Bei echten DBMS nimmt man dafür eine Transaktion (die ja mySQL < 5.x nicht kennt):

SQL-Anweisung
1:
2:
3:
4:
5:
Begin Transaction
INSERT INTO Tabelle (TAB1,TAB2) VALUES (1,2);
INSERT INTO Tabelle (TAB1,TAB2) VALUES (1,2);
INSERT INTO Tabelle (TAB1,TAB2) VALUES (1,2);
commit transaction

oder auch so:

SQL-Anweisung
1:
2:
3:
4:
5:
6:
Insert into Tabelle
  select 1,2
    union
  select 1,2
    union
  select 1,2


BenBE - Fr 21.04.06 13:09

user profile iconalzaimar hat folgendes geschrieben:
So geht das nicht. Auch mit mySQL nicht, denke ich, denn Du hast die Tabelle vergessen, aber egal. :wink:


Trotzdem kann, selbst MySQL 3 bereits die oben (nur syntaktisch unvollständige Version ausführen):

SQL-Anweisung
1:
INSERT INTO Tabelle (TAB1,TAB2) VALUES (1,2),(1,2),(1,2);                    


Inwiefern das die Teile von M$ kapieren steht dabei auf einem ganz anderen Blatt, da überlass ich mal user profile iconalzaimar das Feld ;-)


alzaimar - Fr 21.04.06 14:28

Na ja, B€nB€, mySQL kann nun mal eben keine unvollständige SQL-Befehle ausführen, also auch kein "INSERT INTO (bla, Foo) ... " Darauf wollte ich doch hinaus, aber das hast Du ja bestimmt bemerkt. Hinterher vermutlich erst, aber immerhin.


Amiga-Fan - Fr 21.04.06 14:42

bei oracle geht folgendes:

insert into tabelle1 select spalte1, spalte2 from tabelle2. Dann macht er ein select auf tabelle2 und fügt die gefundenen zeilen mit den gewünschten spalten in tabelle 1 ein.


alzaimar - Fr 21.04.06 14:49

user profile iconalzaimar hat folgendes geschrieben:

oder auch so:

SQL-Anweisung
1:
2:
3:
4:
5:
6:
Insert into Tabelle
  select 1,2
    union
  select 1,2
    union
  select 1,2