2010-11-11 25 views
5

¿Es posible insertar más de una fila en una tabla con una instrucción de inserción? Sé que esto sucederá si hago:insertando varias filas con un comando de inserción

insert into table (fields) select values from another_table 

Pero lo que si quiero insertar:

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

con solo un comando de inserción?

Respuesta

7

dos soluciones (fuente: 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 ; 

o

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

No, esto no es posible. Como ya ha declarado, solo es posible con una cláusula de selección que proporciona los valores de inserción y las filas.

+0

Es definitivamente posible. – rwilliams

+0

al menos después de leer la respuesta aceptada junto con alguna otra, definitivamente ya sabes que es posible. –

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

La pregunta es para Oracle, ¿por qué publica una respuesta PostgreSQL? – Taryn

+0

Eliminé 'PostgreSQL' en mi respuesta. Para su información, esto es estándar SQL-92. –

+0

Esto no funcionará en Oracle como lo requiere el OP. –

Cuestiones relacionadas