with primary foreign ejemplo create autoincrement auto_increment sqlite sqlite3

primary - sqlite insert auto_increment id



¿Puedo modificar una columna en una tabla sqlite a AUTOINCREMENT después de la creación? (11)

¿Puedo hacer un campo de AUTOINCREMENT después de hacer una tabla? Por ejemplo, si creas una tabla como esta:

create table person(id integer primary key, name text);

Luego, más tarde, se dará cuenta de que necesita auto incremento. Cómo lo arreglo, es decir, en MySQL puedes hacer:

alter table person modify column id integer auto_increment

¿Es la creación de tablas la única oportunidad de hacer una columna de AUTOINCREMENT ?


Manera más simple - Solo exportar y volver a importar

Es posible, y relativamente fácil. Exportar la base de datos como un archivo sql. Alterar el archivo SQL y volver a importar:

sqlite3 mydata.db .dump > /tmp/backup.sql vi /tmp/backup.sql mv mydata.db mydata.db.old sqlite3 mydata.db sqlite>.read /tmp/backup.sql


Desde el http://www.sqlite.org/faq.html#q1

Respuesta corta: una columna declarada INTEGER PRIMARY KEY se autoincrementará

Entonces, cuando cree la tabla, declare la columna como INTEGER PRIMARY KEY y la columna se incrementará automáticamente con cada nueva inserción.

O usa la declaración SQL ALTER para cambiar el tipo de columna a una LLAVE PRIMARIA INTEGER después del hecho, pero si crea las tablas usted mismo, es mejor hacerlo en la declaración de creación inicial.


La respuesta simple es la siguiente,

CREATE TABLE [TEST] ( [ID] INTEGER PRIMARY KEY AUTOINCREMENT, [NAME] VARCHAR(100));

y ya está.


No puede alterar columnas en una tabla de SQLite después de que se haya creado. Tampoco puede alterar una tabla para agregarle una clave primaria entera.

Debe crear la clave principal entera cuando cree la tabla.


Puedes alterar la tabla, alterando la definición de la columna.


Puedes volcar el contenido a una nueva tabla:

CREATE TABLE failed_banks_id (id integer primary key autoincrement, name text, city text, state text, zip integer, acquired_by text, close_date date, updated_date date); INSERT INTO failed_banks_id(name, city, state, zip, acquired_by,close_date, updated_date) SELECT name, city, state, zip, acquired_by,close_date, updated_date FROM failed_banks;

Y renombrar la tabla:

DROP TABLE failed_banks; ALTER TABLE failed_banks_id RENAME TO failed_banks;


Sí ¿Tiene instalado phpmyadmin? Creo que si vas a la pestaña ''estructura'' y miras a lo largo de la columna derecha (donde se enumeran los tipos de campo), creo que puedes cambiar una configuración allí para hacer que se incremente automáticamente. También hay una consulta SQL que hará lo mismo.


Sí, puedes hacer una columna que sea autoincremento. Modificar la tabla y añadir una columna. Tenga en cuenta que es de tipo INTEGER Primary Key.


Si bien el sitio de Sqlite le da un ejemplo de cómo hacerlo con una tabla con solo tres campos, se vuelve desagradable con uno de los 30 campos. Dado que tiene una tabla llamada OldTable con muchos campos, el primero de los cuales es "ID" rellenado con enteros. Haga una copia de su base de datos para copia de seguridad. Usando los comandos de punto del programa de comandos,

.output Oldtable.txt .dump Oldtable Drop Table Oldtable;

Abra Oldtable.txt en Microsoft Word o un grep como editor de texto. Encuentre y reemplace los elementos de su campo Integer con NULL. (Es posible que deba ajustar esto para que se ajuste a sus campos). Edite la línea Crear tabla para que el campo que se definió como Integer ahora sea INTEGRADOR PRINCIPAL DE INTEGRACIÓN INTEGERAL Guardar como NewTable.txt

De vuelta en el comando del programa dot.

.read NewTable.txt

Hecho. La identificación ahora es autoincremento.


Fondo:

La nueva clave será única para todas las claves que se encuentran actualmente en la tabla, pero podría superponerse con las claves que se han eliminado previamente de la tabla. Para crear claves que son únicas durante la vida útil de la tabla, agregue la palabra clave AUTOINCREMENT a la declaración INTEGER PRIMARY KEY.

http://www.sqlite.org/faq.html#q1

Limitaciones de SQLite:

SQLite soporta un subconjunto limitado de ALTER TABLE. El comando ALTER TABLE en SQLite permite al usuario cambiar el nombre de una tabla o agregar una nueva columna a una tabla existente. No es posible cambiar el nombre de una columna, eliminar una columna o agregar o eliminar restricciones de una tabla.

http://www.sqlite.org/lang_altertable.html

Hack parece existir:

Parece que puedes configurar

PRAGMA writable_schema = ON;

Luego realice una ACTUALIZACIÓN manual de la tabla sqlite_master para insertar una "clave INTEGER PRIMARY ID" en el SQL para la definición de la tabla. Lo probé y parece funcionar. Pero es peligroso. Si te equivocas, corromperás el archivo de la base de datos.

http://www.mail-archive.com/[email protected]/msg26987.html


Puedes hacerlo con SQLite Expert Personal 4:

1) Seleccione la tabla y luego vaya a la pestaña "Diseño"> pestaña "Columnas".

2) Haga clic en "Agregar" y seleccione el nuevo nombre de columna, y escriba INTEGER y No nulo> Ok.

3) Vaya a la pestaña "Clave principal" en la pestaña "Desgin". Haga clic en "Agregar" y seleccione la columna que acaba de crear. Marque la casilla "Autoincremento".

4) Haga clic en "Aplicar" en la parte inferior derecha de la ventana.

Si regresa a la pestaña "Datos", verá su nueva columna con los números generados automáticamente en ella.