Sentencia Insert condicionada
A diferencia de la anterior sentencia insert, ésta permite la adición de condiciones para llevar a cabo la inserción
Supongamos que la tabla ALUMNO tiene los siguientes datos:
| id | nombre | materias_cursadas | materias_aprobadas | materias_validadas | promedio_notas |
| 1 | juan | 6 |
5 |
2 |
3,5 |
| 2 | luis | 7 |
7 |
0 |
4,1 |
| 3 | sandra | 5 |
5 |
1 |
4,2 |
| 4 | felipe | 8 |
7 |
1 |
3,9 |
| 5 | freddy | 7 |
6 |
1 |
3,6 |
| 6 | milton | 6 |
6 |
2 |
4,3 |
Usando igualmente, las tablas del anterior ejemplo HIST_MATERIAS e HIST_PROMEDIOS, se desea guardar el histórico de los alumnos que cursaron más de 5 materias y el histórico de quienes obtuvieron un promedio académico superior a 4.0
Entonces, de acuerdo con el condicionamiento establecido anteriormente, la sentencia insert sería:
INSERT ALL
WHEN materias_cursadas >5 THEN
INTO hist_materias VALUES ( id, 2005, MATERIAS_CURSADAS,MATERIAS_APROBADAS,MATERIAS_VALIDADAS)
WHEN promedio_notas > 4 THEN
INTO hist_promedios VALUES (id, 2005, promedio_notas)
SELECT * FROM alumno;
8 rows created
Veamos ahora cómo quedaron las tablas HIST_MATERIAS e HIST_PROMEDIOS
HIST_MATERIAS
idAlumno |
anio |
cursadas |
aprobadas |
validadas |
| 1 | 2005 | 6 | 5 | 2 |
| 2 | 2005 | 7 | 7 | 0 |
| 4 | 2005 | 8 | 7 | 1 |
| 5 | 2005 | 7 | 6 | 1 |
| 6 | 2005 | 6 | 6 | 2 |
Se puede ver que en la anterior tabla se insertaron los registro correspondientes a materias_cursadas mayores a 5. En este caso 5 registros cumplieron la condición.
HIST_PROMEDIOS
idalumno |
anio |
promedio_notas |
| 2 | 2005 | 4,1 |
| 3 | 2005 | 4,2 |
| 6 | 2005 | 4,3 |
Y en esta tabla se insertaron igualmente los promedios superiores a 4.0. Aquí solamente 3 registros cumplieron la condición de inserción, por lo que finalmente, la consulta INSERT ALL agregó 5 + 3 = 8 registros
Tomado de www.zonaoracle.com (solo con fines educativos)



