Ejecutar un UPDATE masivo que continúe e ignore las tuplas con error es posible en Oracle siguiendo el siguiente proceso:
Primero, creamos una tabla que vincule la tabla que vamos a actualizar con la que va a guardar los errores. Así podremos saber qué tuplas han fallado:
EXECUTE DBMS_ERRLOG.CREATE_ERROR_LOG('tabla1', 'tabla1_error_log');
Después, ejecutamos el UPDATE incluyendo al final de la consulta la llamada LOG ERRORS hacia la tabla log creada. Por ejemplo:
UPDATE tabla1 SET nombre="" WHERE pais="es" LOG ERRORS INTO tabla1_error_log ('UPDATE running at '||to_char(sysdate, 'yyyy-MM-dd HH24:MI:SS')) REJECT LIMIT UNLIMITED;
Cuando termine el UPDATE, podremos consultar en tabla1_error_log la lista de errores y cuando no la necesitemos, la podemos borrar con el habitual DELETE
Detalles técnicos:
Lenguajes: Oracle 10
Referencias: Tutorial detallado de Oracle
No hay comentarios:
Publicar un comentario