Oracle Error ORA-04091: table is mutating, trigger/function may not see it

Este problema me ocurrió cuando estaba tratando de realizar un trigger para eliminar registros cuando se actualiza o elimina un registro padre dentro de la misma tabla. Por ejemplo, teniendo una tabla «clientes» que usa una relación interna id_cliente y id_cliente_referido, si el id_cliente se actualizaba o eliminaba debía cambiar/eliminar el id del referido también. Este error se genera en triggers al tratar de manipular una tabla que está siendo modificada o va a ser modificada, limitando nuestras acciones, según investigué hay varias soluciones y varias formas de que ocurra el error. Esto puede ocurrir al hacer alguna operación de […]


Comprobar velocidad de una página web en otra región

Cuando trabajo con proyectos en el extranjero, me ha tocado realizar páginas, sistemas y aplicaciones web, siempre desarrollando en local o un servidor de testing, sin embargo a la hora de realizar el deploy final en producción pude notar cierta lentitud de respuesta. En local o en servidores de desarrollo uno contempla que el funcionamiento es increíblemente rápido. Entonces ¿Qué puede suceder en un servidor de producción? En estos casos sería interesante verificar la conexión para determinar si es un problema o simplemente la conexión de nosotros es un poco lenta. Como vivo en latinoamérica, la latencia y la respuesta […]


Evitar cambiar idioma del teclado con combinación de teclas – Windows 10

Es común que sin querer cambiemos el idioma del teclado por alguna combinación de teclas y en windows 10 la combinación es «Alt + Shift» el cual lo uso para ciertos IDE y es muy molesto que al trabajar terminas cambiando el idioma sin darte cuenta, perdiendo tiempo en verificar donde se «fué» la tecla que uso y tener que verificar al idioma a cada rato. El idioma del windows lo uso en inglés o español, el teclado depende del idioma instalado y la distribución del teclado. Actualmente uso el idioma español con la región de latinoamérica y se instalan […]


Eliminar fondo de una imagen online

Existen muchas formas de quitar un fondo de una imagen. Yo siempre he usado photoshop y con mucho esfuerzo y paciencia voy eliminando manualmente los fondos hasta que quede perfectamente como lo no necesito. Esta vez estaba realizando un trabajo en otra pc, la cual no tenía instalado photoshop y tenía que entregar un documento firmado digitalmente. No podía demorarme buscando e instalando la herramienta de edición, así que busqué varias formas de hacerlo online, aunque hay miles de web que lo realizan, voy a recomendar esta que fue la que mejor calidad pude apreciar www.remove.bg   Simplemente escribí mi […]


Error Editor de portadas de fax

Desde que se actualizó el windows 07/2020 he presentado un inconveniente en varias pc. De repente se abre el editor de portadas de fax, no utilizo fax en ninguna de las computadoras que manejo, ni en casa ni en el trabajo, entonces se presenta este problema cada vez que se inicia la pc y a los minutos después de cerrar la aplicación. Como tal, no encontré que lo está causando pero si encontré una solución. Se puede bloquear el servicio de fax para evitar que se repita este molesto problema. Portada de fax:   Nos dirigimos al panel de control […]


Buscar texto en procedimientos, funciones, objetos de oracle 1

Hubo momentos en que necesitaba buscar si una función se encontraba dentro de algún procedimiento, paquete o si se usaba dentro de otra función. Usando toad para oracle, se puede realizar búsquedas en todos los objetos con la opción «object search», pero si da problemas o no trabajas con toad, también se puede realizar las búsquedas con comandos sql. Para buscar en objetos (paquetes, funciones, procedimientos, etc) podemos buscar en dba_source o all_source. dba_source: todos los objetos de la base de datos en donde ejecutemos el sql. all_source: todos los objetos accesibles por el usuario conectado actual. Ejemplo:

Esto […]


Error en fechas al enviar correo UTL_SMTP – Oracle

Oracle incluye un paquete para el manejo de envío de correo directamente desde la base de datos. Desde que me tocó realizar una función para enviar notificaciones a clientes, he trabajado a la par con dicha librería, todas las pruebas fueron correctas, desde cambio de formato a html, múltiples recipientes de correo separados por coma, sin embargo al visualizar los correos no había notado algo importante, aunque llegaba a la bandeja de entrada de primero en outlook, tenían la fecha errada y si tienes ordenado los correos por fecha, no se encontrarían en la fecha de hoy. Este problema se […]


Parámetros por valor o por referencia en JAVA

Esta duda surge desde que uno se inicia en la programación y empieza a trabajar con métodos/funciones que requieren la manipulación de datos sin tener que generar un valor de retorno. En otros lenguajes de programación por lo general, siempre los parámetros se pasan por valor y luego existe una sintaxis especial para indicar si un parámetro va a usarse por referencia. Esto es bastante claro y se entiende sus capacidades pero en Java puede resultar confuso porque no lo especifican claramente y tiene definición distinta. En Java todo se pasa por valor, es decir que no existe el termino […]


Índices Únicos y Búsquedas case-insensitive en Postgresql

Cada vez que trabajo en postgres me tropiezo con los mismos inconvenientes. Entonces se puede decir que hay una serie de reglas que no debo olvidar. Hay dos casos en particular que tomar en cuenta. Índices Únicos Ya sea por código o por herramientas clientes para manipular base de datos como por ejemplo pgAdmin, al utilizar la opción de «crear índice único» en algún campo de una tabla es muy sencillo. Obviamos probar y continuamos elaborando las tablas pero se presenta un inconveniente mucho después al momento de insertar datos. Suponiendo que tenemos una tabla de «usuarios» cuyo campo nombre_usuario […]


Limit en Oracle

Al venir de otros manejadores de base de datos, como por ejemplo Mysql, Postgres, SQLite, ya conocemos la forma de limitar registros con la clausula LIMIT, dicha clausula no existe en Oracle (tampoco en SQLServer) y siempre ha sido una polémica entre los usuarios por lo importante que es. Cómo ya estamos acostumbrados, lo consideramos como parte del estándar pero no lo es, no se contempla entre los estándares de SQL, así que es común que otros manejadores no tengan esta opción. La primera vez que necesité esta opción con Oracle, duré varias horas buscando la alternativa adecuada. Hay varias […]