2010-11-11 16 views
5

Ist es möglich, mehr als eine Zeile in einer Tabelle mit einer Insert-Anweisung einzufügen? Ich weiß, das wird passieren, wenn ich tun:mehrere Zeilen mit einem Befehl einfügen einfügen

insert into table (fields) select values from another_table 

Aber was, wenn ich einfügen wollen:

row 1 - (a1, b1, c1) 
row 2 - (a2, b2, c2) 
... 
row n - (an, bn, cn) 

mit nur einem Befehl insert?

Antwort

7

Zwei Lösungen (Quelle: http://appsfr.free.fr/spip.php?article21):

INSERT ALL 
INTO table (column1, column2) 
VALUES (value1, value2) 
INTO table (column1, column2) 
VALUES (value1, value2) 
...etc... 
SELECT * FROM DUAL ; 

oder

INSERT INTO table (column1, column2) 
SELECT value1, value2 FROM DUAL UNION ALL 
SELECT value1, value2 FROM DUAL UNION ALL 
...etc... 
SELECT value1, value2 FROM DUAL ; 
-5

Nein, das ist nicht möglich. Wie Sie bereits selbst festgestellt haben, ist dies nur mit einer Auswahlklausel möglich, die die Einfügewerte und Zeilen bereitstellt.

+0

Es ist definitiv möglich. – rwilliams

+0

zumindest nach dem Lesen der angenommenen Antwort zusammen mit einigen anderen gegeben, wissen Sie jetzt definitiv, dass es möglich ist. –

5

Insert All

INSERT ALL 
    INTO mytable (column1, column2, column3) VALUES ('val1.1', 'val1.2', 'val1.3') 
    INTO mytable (column1, column2, column3) VALUES ('val2.1', 'val2.2', 'val2.3') 
    INTO mytable (column1, column2, column3) VALUES ('val3.1', 'val3.2', 'val3.3') 
SELECT * FROM dual; 
4
INSERT INTO products (product_no, name, price) VALUES 
    (1, 'Cheese', 9.99), 
    (2, 'Bread', 1.99), 
    (3, 'Milk', 2.99); 
+0

Die Frage ist für Orakel, also warum postest du eine PostgreSQL Antwort? – Taryn

+0

Ich habe 'PostgreSQL' in meiner Antwort entfernt. Für Ihre Informationen ist dies Standard SQL-92. –

+0

Dies funktioniert in Oracle nicht wie vom OP gefordert. –

Verwandte Themen