studio - sqlite sequence auto_increment
Establecer el valor de inicio para AUTOINCREMENT en SQLite (5)
Desde el sitio web de SQLite :
SQLite realiza un seguimiento del ROWID más grande que una tabla haya tenido alguna vez utilizando la tabla especial
SQLITE_SEQUENCE
. La tablaSQLITE_SEQUENCE
se crea e inicializa automáticamente cada vez que se crea una tabla normal que contiene una columna AUTOINCREMENT. El contenido de la tablaSQLITE_SEQUENCE
se puede modificar utilizando las instrucciones ordinarias UPDATE, INSERT y DELETE. Pero hacer modificaciones a esta tabla probablemente perturbe el algoritmo de generación de la clave AUTOINCREMENT. Asegúrese de saber lo que está haciendo antes de emprender tales cambios.
Intenté esto, y funciona:
UPDATE SQLITE_SEQUENCE SET seq = <n> WHERE name = ''<table>''
Donde n +1 es el siguiente ROWID que desea y table es el nombre de la tabla.
¿Cómo puedo establecer el valor de inicio para un campo AUTOINCREMENT en SQLite?
En solución con la tabla SQLITE_SEQUENCE, la entrada en esta tabla parece agregarse después de que se agrega la primera inserción en la tabla con la columna autoincrement. En algunos casos, esto puede causar problemas (es decir, la autoincrementación aún comienza desde 1, no desde el valor deseado).
Estoy usando la consulta siguiente que resuelve el problema cuando sqlite_sequence no tiene un registro para la tabla (es decir, el primer registro no se agregó aún a la tabla), de lo contrario, actualiza la secuencia.
BEGIN TRANSACTION;
UPDATE sqlite_sequence SET seq = <n> WHERE name = ''<table>'';
INSERT INTO sqlite_sequence (name,seq) SELECT ''<table>'', <n> WHERE NOT EXISTS
(SELECT changes() AS change FROM sqlite_sequence WHERE change <> 0);
COMMIT;
Una forma de hacerlo es insertar la primera fila especificando explícitamente la identificación de fila con la que desea comenzar . SQLite luego insertará identificadores de fila que son más altos que el anterior más alto.
Inserte explícitamente el value-1
en la tabla, luego elimine la fila.
Editar: el siguiente comentario, que trata sobre la edición de la tabla SQLITE_SEQUENCE
directamente, probablemente sea preferible: https://.com/a/692871/10093