SQL – Inserción en múltiples tablas – 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:order=”1″ cellpadding=”0″ cellspacing=”0″>

idnombrematerias_cursadasmaterias_aprobadasmaterias_validadaspromedio_notas
1juan6523,5
2luis7704,1
3sandra5514,2
4felipe8713,9
5freddy7613,6
6milton6624,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

idAlumnoaniocursadasaprobadasvalidadas
12005652
22005770
42005871
52005761
62005662

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

idalumnoaniopromedio_notas
220054,1
320054,2
620054,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

Escrito por: Arturo T.
atocarrunchot AT gmail.com

Leave a Reply