Amigos cuando estoy haciendo un merge que me actualice y me inserte.
tabla respuesta_est
fknum_preg_car es foraneo de la tabla pregunta
fkencuestaEST_ESTP_ID foreneo de la tabla estudiante
fkencuestaEST_PEUN_ID foraneo de la tabla periodo
respuesta
En mysql lo hago de esta forma
insert into respuesta_est (respuesta,fknum_preg_car,fkencuestaEST_ESTP_ID,fk encuestaEST_PEUN_ID) values('1002',1,12,103) on duplicate key update Respuesta=2;
En oracle 10g lo hago de esta forma
MERGE INTO
respuesta_est res
USING ( SELECT respuesta, fknum_preg_car, fkencuestaEST_ESTP_ID, fkencuestaEST_PEUN_ID FROM respuesta_est
WHERE fknum_preg_car=4 and fkencuestaEST_ESTP_ID=12 and fkencuestaEST_PEUN_ID=103 and respuesta=888588) e
ON ( e.fkencuestaEST_ESTP_ID =res.fkencuestaEST_ESTP_ID and e.fknum_preg_car=res.fknum_preg_car)
WHEN MATCHED
THEN
UPDATE
SET res.respuesta = 000012 where res.fkencuestaEST_ESTP_ID = e.fkencuestaEST_ESTP_ID and res.fknum_preg_car = e.fknum_preg_car
WHEN NOT MATCHED
THEN
insert(res.respuesta,res.fknum_preg_car,res.fkencu estaEST_ESTP_ID,res.fkencuestaEST_PEUN_ID)VALUES (9111111, e.fknum_preg_car, e.fkencuestaEST_ESTP_ID, e.fkencuestaEST_PEUN_ID) where e.respuesta <> 888588;
Con el único inconveniente que no me esta insertando cuando un el mismo estudiante me inserta otra respuesta..
Espero un pronta colaboración
Gracias por su tiempo.