ORA_ROWSCN ¿Cómo conocer la fecha y hora de última modificación de una fila dentro de una tabla?

Ayer me tocó afrontar una tarea sencilla, de las del día a día. Algo que para cualquier DBA es de primero de primaria. Borrar unas filas de una tabla.

Aparentemente, algo muy sencillo.

  1. Primero, una select para ver lo que hay en la tabla
  2. Segundo, montamos una select para seleccionar lo que vamos a borrar y estar seguros antes de ejecutar el delete.
  3. Tercero, como uno es inseguro por naturaleza, hace una copia de la tabla por si acaso (create table NOMBRETABLA as select * from TABLAORIGEN).
  4. Cuarto, ya preparados y asegurados, ejecutamos el delete.
  5. Quinto, un commit, que confirme bien que hemos borrado los registros.
  6. Sexto y último paso, volver a hacer el primer select para verificar que hemos borrado los datos.

Fácil no? Una tarea rápida, de las que a veces se agradecen para descansar un poco la cabeza y no tener que pensar demasiado.

Hoy, me dicen si realmente he ejecutado el borrado, que parece que los registros no se han borrado, que siguen ahí.

What? Como es posible? 😱 Juro y perjuro que los he borrado.

Compruebo, y efectivamente, ahí están. NO ES POSIBLE. Los registros siguen en la tabla. 😡

Repito el mismo procedimiento, vuelvo a montar las consultas (porque algo tan simple, para qué lo iba a guardar?) ejecuto todo, vuelvo a comprobar, y los datos, efectivamente, ya no están.

Antes de confirmar de nuevo que los he vuelto a borrar, he preferido ser más conservador y esperar.

TACHÁN!! Al esperar un rato, vuelvo a comprobar, y ahí están de nuevo, los registros han vuelto a aparecer en la tabla.

Leer artículo completo

Modo actualización segura en MySQL. Error Code: 1175. You are using safe update mode

Si trabajas con MySQL, casi seguro que unas pocas de veces te has chocado con este tipo de error.
Si has hecho un curso de MySQL, seguro que es de las primeras cosas que te han enseñado.
Y por supuesto, si usas MySQL Workbench, lo has sufrido sí o sí.

El Error

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. 
To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
Leer artículo completo