Estoy tratando de crear una tabla con un incremento automático primary key
en Sqlite3 . No estoy seguro de si esto es realmente posible, pero espero solo tener que designar los otros campos.
Por ejemplo:
CREATE TABLE people (id integer primary key auto increment, first_name varchar(20), last_name varchar(20));
Luego, cuando agrego un valor, esperaba solo tener que hacer:
INSERT INTO people
VALUES ("John", "Smith");
¿Es esto siquiera posible?
Estoy funcionando sqlite3
bajo cygwin
Windows 7.
select rowid from people;
Si, esto es posible. Según las preguntas frecuentes de SQLite :
fuente
A partir de hoy - junio de 2018
Esto es lo que la documentación oficial de SQLite tiene que decir sobre el tema (negrita y cursiva son mías):
fuente
¿Has leído esto? ¿Cómo creo un campo AUTOINCREMENT?
fuente
No se debe especificar la
AUTOINCREMENT
palabra clave cercaPRIMARY KEY
. Ejemplo de creación de clave primaria de autoincremento e inserción:daré:
fuente
Además de rowid, puede definir su propio campo de incremento automático, pero no se recomienda. Siempre es una mejor solución cuando usamos rowid que aumenta automáticamente.
Lea aquí para obtener información detallada.
fuente
AUTOINCREMENT de SQLite es una palabra clave que se utiliza para incrementar automáticamente el valor de un campo en la tabla. Podemos incrementar automáticamente un valor de campo usando la palabra clave AUTOINCREMENT al crear una tabla con un nombre de columna específico para incrementarla automáticamente.
La palabra clave AUTOINCREMENT se puede utilizar con el campo INTEGER solamente. Sintaxis:
El uso básico de la palabra clave AUTOINCREMENT es el siguiente:
Para ver un ejemplo, consulte a continuación: Considere que la tabla EMPRESA se creará de la siguiente manera:
Ahora, inserte los siguientes registros en la tabla TB_COMPANY_INFO:
Ahora seleccione el registro
fuente
Sé que esta respuesta llega un poco tarde.
Mi propósito para esta respuesta es para referencia de todos en caso de que encuentren este tipo de desafío con SQLite ahora o en el futuro y estén teniendo dificultades con eso.
Ahora, mirando hacia atrás en su consulta, debería ser algo como esto.
Funciona por mi parte. Al igual que,
En caso de que esté trabajando con SQLite, le sugiero que consulte DB Browser para SQLite . También funciona en diferentes plataformas.
fuente
Lo que hace es correcto, pero la sintaxis correcta para 'incremento automático' debe ser sin espacio:
(Tenga en cuenta también que cambié sus varchars a cadenas. Eso es porque SQLite transforma internamente un varchar en una cadena, ¿por qué molestarse?)
entonces su inserción debe ser, en lenguaje SQL lo más estándar posible:
si bien es cierto que si omite id, se incrementará y asignará automáticamente, personalmente prefiero no depender de mecanismos automáticos que podrían cambiar en el futuro.
Una nota sobre el autoincremento: aunque, como muchos señalaron, la gente de SQLite no lo recomienda, no me gusta la reutilización automática de los identificadores de los registros eliminados si no se usa el autoincremento. En otras palabras, me gusta que la identificación de un registro eliminado nunca vuelva a aparecer.
HTH
fuente