2011-12-08 33 views
39

Actualmente tengo una tabla llamada del usuario que tiene una columna de ID que se crea comoAndroid SQLite incremento automático

'INTEGER PRIMARY KEY'

digamos que he creado dos usuarios por lo que la tabla tiene ID 1 y 2

Si elimino el segundo usuario y crear un tercio de la identificación es 2, necesito que esto sea 3

Por lo que parece Android es seleccionar el siguiente ID disponible, ¿cómo puedo cambiar esto a sus más como un número de secuencia?

Saludos

+1

pero u necesidad de clave principal y esto fine.why está trabajando u necesidad de esto? –

Respuesta

84

Que sea INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL. Esto es lo que dicen the docs:

Si una columna tiene el tipo INTEGER PRIMARY KEY AutoIncrement entonces ... ROWID elegido para la nueva fila está al menos uno más grande que el más grande que se ROWID nunca antes existió en ese misma mesa

El comportamiento implementado por la palabra clave AUTOINCREMENT es sutilmente diferente del comportamiento predeterminado. Con AUTOINCREMENT, filas con ROWIDs automáticamente seleccionados tienen ROWIDs que tienen nunca antes utilizados por la misma tabla en la misma base de datos. Y el generado automáticamente ROWIDs está garantizado para ser monótonamente cada vez mayor.

+1

Quiero 'AUTOINCREMENT' sin 'PRIMARY KEY'. Debido a que asigno la clave primaria es otra columna, estoy usando '_ID INTEGER AUTOINCREMENT NOT NULL' este error de configuración. Por favor, ayúdenme bro. – reegan29

+0

@ reegan29 AUTOINCREMENT solo se puede utilizar con INTEGER PRIMARY KEY. Según * Porque la palabra clave AUTOINCREMENT cambia el comportamiento del algoritmo de selección ROWID, AUTOINCREMENT no está permitido en tablas SIN ROWID ni en ninguna columna de tabla que no sea INTEGER PRIMARY KEY.Cualquier intento de utilizar AUTOINCREMENT en una tabla WITHOUT ROWID o en una columna que no sea la columna INTEGER PRIMARY KEY da como resultado un error. * [SQLinc Autoincrement] (https://sqlite.org/autoinc.html) – MikeT

9

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 utilizar con el campo INTEGER solamente. Sintaxis:

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

CREATE TABLE table_name(
    column1 INTEGER AUTOINCREMENT, 
    column2 datatype, 
    column3 datatype, 
    ..... 
    columnN datatype, 
); 

Por ejemplo ver más abajo: Considere COMPANY mesa para ser creada de la siguiente manera:

sqlite> CREATE TABLE TB_COMPANY_INFO(
    ID INTEGER PRIMARY KEY AUTOINCREMENT, 
    NAME   TEXT  NOT NULL, 
    AGE   INT  NOT NULL, 
    ADDRESS  CHAR(50), 
    SALARY   REAL 
); 

Ahora, inserción siguiente registros en la tabla TB_COMPANY_INFO:

INSERT INTO TB_COMPANY_INFO (NAME,AGE,ADDRESS,SALARY) 
VALUES ('MANOJ KUMAR', 40, 'Meerut,UP,INDIA', 200000.00); 

Ahora Seleccione el registro

SELECT *FROM TB_COMPANY_INFO 
    ID  NAME   AGE  ADDRESS    SALARY 
    1  Manoj Kumar  40  Meerut,UP,INDIA  200000.00 
+0

gracias ... I necesitaba "INTEGER PRIMARY KEY AUTOINCREMENT" para el campo de autoincrement ... y lo obtuve. –

+0

Dispara, tuve 'AUTOINCREMENT' en el lugar equivocado. Gracias por el ejemplo! – booky99

Cuestiones relacionadas