Más de SQLite – UPDATE / ROWID

En el Instituto seguimos utilizando este pequeño motor de base de datos por la flexibilidad y portabilidad que brinda.

Por lo que para nuestros procesos de trabajo hemos tenido que internarnos más en su juego de instrucciones SQL.

Las cosas se han vuelto más complejas en cuanto a la recolección y obtención de información oportuna por lo que de momento tenemos que crear archivos de prueba para empezar a generar resultados que generalmente plasmamos en cuadros con información en formato de Microsoft Excel.

Hace algún tiempo escribí como hacer un update masivo en base a otra tabla por medio de la clausula EXISTS en Oracle, necesitaba algo similar en SQLite y lo que he encontrado es lo siguiente.

Por ejemplo si queremos que todos los valores de una columna sean constantes simplemente se anota la instrucción UPDATE sin ninguna clausula WHERE, aquí mismo aprovecharé para explicar el segundo concepto que el valor ROWID que pudiera ser el RECNO() de FoxPro, es decir se pudiera decir que es el índice donde esta una tupla de una tabla, entonces si queremos un campo con valores únicos (un identificador único) podemos hacer lo siguiente:

UPDATE tabla SET Seq=ROWID;

Con esto tenemos un número consecutivo para guardar en una tabla.

Vista de tabla después de haber aplicado un update con valor rowid.

Ahora como actualizar de forma masiva conjuntos de datos a traves de sus llaves para que hagan match con cada uno de los registros.

En el siguiente ejemplo hago una variable utilizando varias subconsultas para llegar al dato, para después dejar la variable en una tabla con las llaves necesarias para hacer “match” con esta misma tabla.

Subconsulta para crear la variable TRAT_INFS y dejarla en una tabla temporal TmpC9A8

Ahora con esta tabla hacemos el update para pegar esta variable a cada registro de la tabla ADOLESCENTE_220419.

Un índice para la nueva tabla y el comando UPDATE que agregará la variable TRAT_INFTS en cada tupla de ADOLESCENTE_220419

Con esto podemos hacer múltiples modificaciones a nuestra tabla, esto ante la imposibilidad de usar procedimientos almacenados en SQLite, hasta aquí este post.

Hasta la vista.

Profesor Miguel Araujo

Deja un comentario