[SOLUCIONADO] Como borrar o renombrar columna con otra columna autoincremental en SQLite - Versión para impresión +- Comunidad Gambas-es (https://gambas-es.org) +-- Foro: Gambas (https://gambas-es.org/forum-3.html) +--- Foro: Bases de Datos (https://gambas-es.org/forum-6.html) +--- Tema: [SOLUCIONADO] Como borrar o renombrar columna con otra columna autoincremental en SQLite (/thread-870.html) |
Como borrar o renombrar columna con otra columna autoincremental en SQLite - gambafeliz - 07-04-2022 Hola Necesito hacer una de las dos cosas siguientes: 1. Borrar columna 2. Renombrar columna El gran problema es que tengo una columna distinta a la que deseo borrar o renombrar que es primary key Autoincrement y además esta relacionada en otras tablas y para mas complicación existen filas eliminadas y por lo tanto existen elementos incrementados borrados (ejemplo: 1, 2, 3, elementos eliminados en el conteo,10, 11, 12...) Yo tengo ideas para resolverlo pero deseo comprobar si alguien me puede dar una lección magistral. Gracias. === Solución ==================================== La solución la a aportado "vuott" y Gianluigi del foro de Italia. Yo en particular he optado por cambiar el nombre de la columna y así no afecto a nada mas que a vistas. Este es el comando: alter table nombreTabla Rename column "columnaAcambiarNombre" to "nombreNuevo"; RE: Como borrar o renombrar columna con otra columna autoincremental en SQLite - omoreno - 07-04-2022 Hola gambafeliz. Tengo dos opciones, no es magistral, pero me funciona: Opción 1: La forma lenta: Pasos:
Todo lo puedes escribir en un solo Query Opcion2: La forma rápida: Instala el programa SQLiteStudio desde https://sqlitestudio.pl/ y hará todo automático. Saludos. RE: Como borrar o renombrar columna con otra columna autoincremental en SQLite - gambafeliz - 07-04-2022 No lo he probado todavía pero me encanta tu propuesta. Muchas gracias. Nota: no estoy seguro pero primary key es distinto a clave foránea. ¿Estás de acuerdo o estoy equivocado? Por lo tanto, si tengo razón, ¿es posible que falle tu propuesta? RE: Como borrar o renombrar columna con otra columna autoincremental en SQLite - vuott - 07-04-2022 https://www.gambas-it.org/smf/index.php?topic=9164.msg51684#msg51684 RE: Como borrar o renombrar columna con otra columna autoincremental en SQLite - gambafeliz - 07-04-2022 Guau vuott Eres la pera (magnífico) Gracias en mayúsculas a ti y a Gianluigi Observo que en el foro de Italia sois magníficos. Estupenda comunidad la de Gambas. Lo voy a probar pero desde luego estás son las respuestas. RE: Como borrar o renombrar columna con otra columna autoincremental en SQLite - Harpo - 07-04-2022 Yo el ALTER TABLE de SQLite lo trataría con respeto, y si no se tiene muy claro y sabes lo que modificas.... Estoy con Omoreno, yo uso SQLiteStudio para esas cosas. Y lo que hace es generar un script para que veas qué modifica y asegurarse de que todo salga correcto. He cambiado un campo TEXT a VARCHAR(100) y estos son los pasos a dar: Un saludo. RE: Como borrar o renombrar columna con otra columna autoincremental en SQLite - gambafeliz - 07-04-2022 Gracias, Harpo no conocía el programa que me proponéis, pero sinceramente, me encanta escribir los comandos yo mismo, he incluso me gusta usar directamente la ayuda de SQLite pero desconocía los comandos de la propuesta de vuott, por que, sinceramente soy usuario novel en SQLite, pero no en bases de datos Oracles, MySQL, MariaDB... ni de Microsoft SQL. Como verás al final son todas muy similares, pero insisto, de SQLite ahora. RE: Como borrar o renombrar columna con otra columna autoincremental en SQLite - omoreno - 08-04-2022 (07-04-2022, 13:57)gambafeliz escribió: Nota: no estoy seguro pero primary key es distinto a clave foránea. ¿Estás de acuerdo o estoy equivocado? Hola gambafeliz. Disculpa la demora en responder, estaba peleando con una conexión a Oracle... que casi me da un infarto... . Ciertamente PK no es igual a FK, pero si tu PK en esa tabla es FK en otra tabla, entonces al tratar de hacerle algún alter a la columna PK, SQLite se quejara de que es FK en otra tabla y no te dejara, por eso es que se ejecuta el comando para liberar momentáneamente los FK. Nota: Como dice el colega Harpo, realizar esto de forma manual tiene alto riesgo, solamente lo hago de la forma que te comente arriba cuando tengo que actualizar las bases de datos remotas de dispositivos mobiles (Android), enviando el script completo con la actualización dentro del programa. Saludos. |