Deprecated: Function create_function() is deprecated in /home/nekdyruf/public_html/codi/wp-content/plugins/wp-syntax/geshi/geshi.php on line 4751
Desde la versión 9i podemos realizar este tiempo de inserciones. Podemos insertar en más de una tabla de forma paralela, en la misma sentencia, poniendo o no condiciones.
Utilizaremos la tabla EMPLEADOS para verlo más claramente:
1 2 3 4 5 | Name TYPE DNI VARCHAR2(20) DEPARTAMENTO VARCHAR2(20) EDAD NUMBER(2) |
Crearemos tres tablas con sólo los dos primeros campos para separar a los empleados por edad;
1 2 3 4 5 6 7 | CREATE TABLE EMPLEADOS_20 AS SELECT DNI, DEPARTAMENTO FROM empleados WHERE 1=0; CREATE TABLE EMPLEADOS_30 AS SELECT DNI, DEPARTAMENTO FROM empleados WHERE 1=0; CREATE TABLE EMPLEADOS_40 AS SELECT DNI, DEPARTAMENTO FROM empleados WHERE 1=0; CREATE TABLE RESTO AS SELECT DNI, DEPARTAMENTO FROM empleados WHERE 1=0; |
Si añadimos la condición WHERE la creará sin datos.
INSERT ALL
Como prueba insertaremos los datos de empleados en todas las tablas:
INSERT ALL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | INTO EMPLEADOS_20 VALUES (DNI,DEPARTAMENTO) INTO EMPLEADOS_30 VALUES (DNI,DEPARTAMENTO) INTO EMPLEADOS_40 VALUES (DNI,DEPARTAMENTO) SELECT DNI,DEPARTAMENTO,EDAD FROM EMPLEADOS; |
INSERT ALL WHEN
(se insertan los valores especificados en todas las condiciones verdaderas.)
Ahora repartiremos los empleados en las tablas dependiendo de su edad. Crearemos una tabla para recoger al resto de las edades superiores:
INSERT ALL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | WHEN (EDAD<30) THEN INTO EMPLEADOS_20 VALUES (DNI,DEPARTAMENTO) WHEN (EDAD<40) THEN INTO EMPLEADOS_30 VALUES (DNI,DEPARTAMENTO) WHEN (EDAD<50) THEN INTO EMPLEADOS_40 VALUES (DNI,DEPARTAMENTO) ELSE INTO RESTO VALUES (DNI,DEPARTAMENTO) SELECT DNI,DEPARTAMENTO,EDAD FROM EMPLEADOS; |
INSERT FIRST WHEN
(sólo se insertan los valores especificados en la primera condición verdadera)
Si existe un empleado que tenga más de 50, aunque cumple la condición para ir a la tabla de EMPLEADOS_40 también, se insertará en la tabla RESTO solamente, porque es la primera condición verdadera.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | INSERT FIRST WHEN (EDAD<50) THEN INTO RESTO VALUES (DNI,DEPARTAMENTO) WHEN (EDAD<30) THEN INTO EMPLEADOS_20 VALUES (DNI,DEPARTAMENTO) WHEN (EDAD<40) THEN INTO EMPLEADOS_30 VALUES (DNI,DEPARTAMENTO) WHEN (EDAD<40) THEN INTO EMPLEADOS_40 VALUES (DNI,DEPARTAMENTO SELECT DNI,DEPARTAMENTO,EDAD FROM EMPLEADOS |
Limitaciones:
La suma del total de las columnas INTO no puede exceder 999
Sólo funciona en tablas, no en vistas o vistas materializadas.
– Sentencias de insercion multitabla.