Las capas espaciales (tablas) en SpatiaLite incluyen varios objetos de apoyo y metadatos, incluidos desencadenantes, índices y entradas en (como mínimo) la geometry_columns
tabla. Estoy buscando (preferiblemente) una GUI que maneje todos los cambios necesarios de una vez, o la documentación (alternativa) de todos los cambios necesarios para no romper las capas espaciales.
Las tablas tienen:
- Entrada en
geometry_columns.f_table_name
. - Cinco disparadores nombrados
[prefix]_[table_name]_geometry
, donde el prefijo indica si se trata de una reversión de transacción o actualización de índice. - Tres índices espaciales llamados
idx_[table_name]_geometry[_suffix]
He intentado esto en dos aplicaciones, QGIS DB Manager y SpatiaLite-GUI.
QGIS DB Manager parece tener los siguientes efectos:
- Se actualiza correctamente
geometry_columns
con el nuevo nombre de la tabla - No cambia el nombre de los desencadenantes. La definición del disparador se modifica parcialmente, de modo que se
BEFORE [INSERT|UPDATE|DELETE]
refiere al nuevo nombre de la tabla, pero la condición aún busca el nombre antiguo engeometry_columns
. - No renombra los índices espaciales. No estoy seguro de si esto es importante porque los desencadenantes aún se refieren a nombres de índice antiguos.
Cuando elige Mantenimiento → Cambiar nombre de tabla en SpatiaLite-GUI, solo obtiene el código auxiliar de una ALTER TABLE
instrucción SQL . Este es un SQL sencillo y hace incluso menos que QGIS DB Manager. Si completa el nuevo nombre de la tabla, la tabla se renombra. Otros efectos:
- La tabla no se renombra
geometry_columns.f_table_name
, lo que significa que muchos SIG no verán la tabla como una capa espacial. - No cambia el nombre de los desencadenantes. La definición del disparador se modifica parcialmente, de modo que se
BEFORE [INSERT|UPDATE|DELETE]
refiere al nuevo nombre de la tabla, pero la condición aún busca el nombre antiguo engeometry_columns
. - No renombra los índices espaciales. No estoy seguro de si esto es importante porque los desencadenantes aún se refieren a nombres de índice antiguos.
Tenga en cuenta que Spatialite-GUI ofrece la opción de recuperar una columna de geometría que agrega la entrada correcta geometry_columns
(pero requiere que especifique SRID, tipo de geometría y dimensiones), para construir o reconstruir un índice espacial y para recuperar disparadores, pero ninguno De estas funciones, se eliminan las filas, los desencadenantes o los índices de la tabla anterior, lo que lleva a una base de datos con una gran cantidad de (posiblemente inofensivo pero molesto) schmutz.