transact language descargar sql sqlite cygwin

language - ¿Hay un incremento automático en sqlite?



sqlite3 doc (8)

A partir de hoy - junio de 2018

Aquí está lo que la here tiene que decir sobre el tema (negrita y cursiva son mías):

  1. La palabra clave AUTOINCREMENT impone CPU extra, memoria, espacio en disco y sobrecarga de E / S de disco y debe evitarse si no es estrictamente necesario. Por lo general no es necesario.

  2. En SQLite, una columna con tipo INTEGER PRIMARY KEY es un alias para ROWID (excepto en tablas SIN ROWID) que siempre es un entero con signo de 64 bits.

  3. En un INSERT, si a la columna ROWID o INTEGER PRIMARY KEY no se le asigna explícitamente un valor, entonces se completará automáticamente con un entero no utilizado, generalmente uno más que el ROWID más grande actualmente en uso. Esto es así independientemente de si se utiliza o no la palabra clave AUTOINCREMENT.

  4. Si la palabra clave AUTOINCREMENT aparece después de INTEGER PRIMARY KEY , eso cambia el algoritmo automático de asignación de ROWID para evitar la reutilización de ROWID a lo largo de la vida de la base de datos. En otras palabras, el objetivo de AUTOINCREMENT es evitar la reutilización de ROWID de filas previamente eliminadas.

Estoy intentando crear una tabla con una primary key incremento automático en Sqlite3 . No estoy seguro de si esto es realmente posible, pero espero que solo tenga 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 agregue un valor, esperaba solo tener que hacer:

INSERT INTO people VALUES ("John", "Smith");

¿Esto es posible?

Estoy ejecutando sqlite3 bajo cygwin en Windows 7.



Además de rowid, puede definir su propio campo de incremento automático, pero no es recomendable. Siempre es una mejor solución cuando usamos rowid que se incrementa automáticamente.

La palabra clave AUTOINCREMENT impone CPU extra, memoria, espacio en disco y sobrecarga de E / S de disco y debe evitarse si no es estrictamente necesario. Por lo general no es necesario.

Lea here para obtener información detallada.


No se debe especificar la palabra clave AUTOINCREMENT cerca de PRIMARY KEY . Ejemplo de creación de clave primaria autoincrement e inserción:

$ sqlite3 ex1 CREATE TABLE IF NOT EXISTS room(room_id INTEGER PRIMARY KEY, name VARCHAR(25) NOT NULL, home_id VARCHAR(25) NOT NULL); INSERT INTO room(name, home_id) VALUES (''test'', ''home id test''); INSERT INTO room(name, home_id) VALUES (''test 2'', ''home id test 2''); SELECT * FROM room;

daré:

1|test|home id test 2|test 2|home id test 2


Obtienes uno gratis, llamado ROWID. Esto está en cada tabla de SQLite ya sea que lo solicite o no.

Si incluye una columna de tipo INTEGER PRIMARY KEY, esa columna apunta a (es un alias para) la columna ROWID automática.

A ROWID (por el nombre que se le llame) se le asigna un valor cada vez que INSERTE una fila, como era de esperar. Si asigna explícitamente un valor que no sea NULL en INSERTAR, obtendrá ese valor especificado en lugar del incremento automático. Si asigna explícitamente un valor de NULL en INSERTAR, obtendrá el siguiente valor de incremento automático.

Además, debes tratar de evitar:

INSERT INTO people VALUES ("John", "Smith");

y use

INSERT INTO people (first_name, last_name) VALUES ("John", "Smith");

en lugar. La primera versión es muy frágil: si alguna vez agrega, mueve o elimina columnas en la definición de su tabla, INSERT fallará o producirá datos incorrectos (con los valores en las columnas incorrectas).


Sé que esta respuesta es un poco tarde.
Mi propósito para esta respuesta es para la referencia de todos si se encuentran con este tipo de desafío con SQLite ahora o en el futuro y están teniendo dificultades con él.

Ahora, volviendo a su consulta, debería ser algo como esto.

CREATE TABLE people (id integer primary key autoincrement, first_name varchar(20), last_name varchar(20));

Funciona en mi extremo. Al igual que,

En caso de que esté trabajando con SQLite, le sugiero que consulte DB Browser for SQLite . Funciona en diferentes plataformas también.



SQLite AUTOINCREMENT es una palabra clave utilizada para aumentar automáticamente el valor de un campo en la tabla. Podemos auto incrementar el valor de un 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 usar con el campo INTEGER solamente. Sintaxis:

El uso básico de la palabra clave AUTOINCREMENT es el siguiente:

CREATE TABLE table_name (columna1 INTEGER AUTOINCREMENT, tipo de datos column2, tipo de datos column3, ..... tipo de datos columnN,);

Por ejemplo, consulte a continuación: Considere la tabla de EMPRESA que se creará de la siguiente manera:

sqlite> CREATE TABLE TB_COMPANY_INFO (ID INTEGER PRIMARY KEY AUTOINCREMENT, NOMBRE TEXTO NOT NULL, EDAD INT NOT NULL, DIRECCION CHAR (50), SALARIO REAL);

Ahora, inserte los siguientes registros en la tabla TB_COMPANY_INFO:

INSERTAR EN TB_COMPANY_INFO (NOMBRE, EDAD, DIRECCIÓN, SALARIO) VALORES (''MANOJ KUMAR'', 40, ''Meerut, UP, INDIA'', 200000.00);

Ahora Seleccione la grabación SELECCIONE * FROM TB_COMPANY_INFO ID NOMBRE EDAD DIRECCIÓN SALARIO 1 Manoj Kumar 40 Meerut, UP, INDIA 200000.00