jueves, 17 de noviembre de 2016

INSERT FIRST

INSERT Condicional: conditional_insert_clause 
Especifique la cláusula conditional_insert_clause para realizar una inserción (INSERT) condicional de varias tablas. Oracle Server filtra cada cláusula insert_into_ clause a través de la condición WHEN correspondiente, lo que determina si se ejecutará insert_into_clause. Una única sentencia INSERT de varias tablas puede contener hasta 127 cláusulas WHEN.

INSERT Condicional: FIRST 
Si especifica FIRST, Oracle Server evalúa cada cláusula WHEN en el orden en que aparece en la sentencia. Si la primera cláusula WHEN se evalúa como verdadera, Oracle Server ejecuta la cláusula INTO correspondiente y salta las cláusulas WHEN siguientes para la fila especificada.

INSERT Condicional: Cláusula ELSE 
Para una fila especificada, si no se evalúa ninguna cláusula WHEN como verdadera:

  • Si ha especificado una cláusula ELSE, Oracle Server ejecuta la lista de cláusulas INTO asociadas a la cláusula ELSE. 
  • Si no ha especificado una cláusula ELSE, Oracle Server no realiza ninguna acción para esa fila. 

Restricciones en Sentencias INSERT de Varias Tablas 

  • Se pueden realizar sentencias INSERT de varias tablas sólo en tablas, no en vistas ni en vistas materializadas. 
  • No se puede realizar una inserción (INSERT) de varias tablas en una tabla remota. 
  • No se puede especificar una expresión de recopilación de tablas al realizar una inserción (INSERT) de varias tablas. 
  • En una inserción (INSERT) de varias tablas, no se pueden combinar todas las cláusulas insert_into_clauses para especificar más de 999 columnas de destino. 


El ejemplo inserta filas en más de una tabla mediante una única sentencia INSERT. La sentencia SELECT recupera los detalles de identificador de departamento, salario total y fecha de contratación máxima de cada departamento de la tabla EMPLOYEES. 

Esta sentencia INSERT se conoce como FIRST INSERT condicional, ya que se realiza una excepción para los departamentos cuyo salario total sea mayor que 25.000 dólares. La condición WHEN ALL > 25000 se evalúa en primer lugar. Si el salario total de un departamento es mayor que 25.000 dólares, el registro se inserta en la tabla SPECIAL_SAL, independientemente de la fecha de contratación. Si esta primera cláusula WHEN se evalúa como verdadera, Oracle Server ejecuta la cláusula INTO correspondiente y salta las cláusulas WHEN siguientes para esta fila. 

Para las filas que no satisfacen la primera condición WHEN (WHEN SAL > 25000), el resto de las condiciones se evalúa igual que una sentencia INSERT condicional y los registros recuperados mediante la sentencia SELECT se insertan en las tablas HIREDATE_HISTORY_ 00 o HIREDATE_HISTORY_99 o HIREDATE_HISTORY, basándose en el valor de la columna HIREDATE. 

Se puede interpretar que el feedback 8 rows created significa que se realizó un total de ocho sentencias INSERT en las tablas base, SPECIAL_SAL, HIREDATE_HISTORY_00, HIREDATE_HISTORY_99 y HIREDATE_HISTORY. 


Share:

0 comentarios:

Publicar un comentario

Archivo

Cual es el tema de mayor interes para ti?