Si cambio el nombre de Tablas/Columnas/Filas SQLite después de que se hayan creado los índices, ¿seguirán funcionando los índices anteriores?Renombrar tablas/columnas/filas SQLite después de que se hayan creado los índices
Gracias!
Si cambio el nombre de Tablas/Columnas/Filas SQLite después de que se hayan creado los índices, ¿seguirán funcionando los índices anteriores?Renombrar tablas/columnas/filas SQLite después de que se hayan creado los índices
Gracias!
Si está utilizando ALTER TABLE
con RENAME TO
cambiar el nombre de una tabla, a continuación, tal como se describe en this page (a partir de los documentos sqlite) los índices seguirán funcionando:
El comando ALTER TABLE en SQLite permite la usuario para cambiar el nombre de una tabla [...] Si la tabla que se cambia de nombre tiene desencadenantes o índices, estos permanecen adjuntos a la tabla después de haber sido renombrada.
Pero tenga en cuenta que no hay cambio de nombre de columnas permitido. Este es uno de los SQL features not implemented by sqlite:
Solo se admiten las variantes RENAME TABLE y ADD COLUMN del comando ALTER TABLE. Se omiten otros tipos de operaciones ALTER TABLE, como DROP COLUMN, ALTER COLUMN, ADD CONSTRAINT, etc.
Filas no tienen nombres (excepto en el sentido de tener una PK) así que no hay realmente una manera de cambiar el nombre de ellos.
Recomiendo usar las migraciones de ActiveRecord de Rails para mantener su base de datos. Esto se puede hacer fuera de Rails. Por lo que la aplicación no tiene por qué ser una aplicación para utilizar los carriles tareas rastrillo
Vea aquí un excelente blog sobre cómo hacer esto http://exposinggotchas.blogspot.com/2011/02/activerecord-migrations-without-rails.html
Sí, los viejos índices seguirá siendo funcional.
Tenga en cuenta que a sqlite no le importan los nombres de los índices. Inicialmente, cuando se crea un índice, generalmente reciben el nombre de la tabla y el campo, de modo que cuando cambie el nombre de la tabla, los índices seguirán teniendo el nombre de la tabla anterior. Esto puede causar problemas, cuando por ejemplo:
cambiar el nombre de la mesa de edad:
sqlite3 "$DB" "PRAGMA busy_timeout=20000; ALTER TABLE '$TABLE' RENAME TO '$TABLE"_backup"'"
Esto provocará un error , que los índices ya existen.
Solución: Cambie el nombre de los índices o bórrelos en la tabla renombrada antes de volver a importar el original (consulte this answer).
¿Hay alguna forma de copiar la información de una columna a otra y luego eliminar la primera columna? – joshim5
Vea esta [otra pregunta de SO] (http://stackoverflow.com/questions/805363/how-do-i-rename-a-column-in-a-sqlite-database-table) sobre el cambio de nombre de las columnas –
Estaba en realidad solo mirando a través de eso :). La primera respuesta se ve genial, pero ¿cómo debo lidiar con los índices? – joshim5