Base de datos Android SQLite Después de eliminar la tabla, ¿el id comienza desde 1?

Tengo una duda que si suprimo la tabla usando las sentencias siguientes,

SQLiteDatabase db = this.getWritableDatabase(); db.delete(date_difference, null, null); 

Entonces si estoy insertando una fila como un registro fresco y primer en la tabla, el incremento automático de la clave principal de ID de los registros comenzará desde 1?

Si no se especifica ROWID en el inserto o si el ROWID especificado tiene un valor NULL, se crea automáticamente un ROWID apropiado. El algoritmo usual es dar a la fila recién creada un ROWID que es uno más grande que el ROWID más grande de la tabla antes del inserto. Si la tabla está inicialmente vacía, se utiliza un ROWID de 1. Si el ROWID más grande es igual al entero más grande posible (9223372036854775807), entonces el motor de base de datos comienza a escoger ROWIDs candidatos positivos al azar hasta que encuentre uno que no se utilice previamente.

Así que sí, después de eliminar la tabla, los ID empezarán desde 1

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

La documentación proporcionada indica que el método delete es:

 Convenience method for deleting rows in the database. 

La sintaxis es:

 int delete(String table, String whereClause, String[] whereArgs) 

Por lo tanto, no comenzará de nuevo. Continuará con el último incremento. Si eliminó toda la tabla y la volvió a crear, el incremento comenzaría en 1.

SQLite realiza un seguimiento del ROWID más grande que una tabla haya realizado utilizando una tabla interna denominada "sqlite_sequence" . La tabla sqlite_sequence se crea e inicializa automáticamente cada vez que se crea una tabla normal que contiene una columna AUTOINCREMENT **. El contenido de la tabla sqlite_sequence se puede modificar utilizando las sentencias UPDATE, INSERT y DELETE ordinarias **. Sin embargo, hacer modificaciones en esta tabla probablemente perturbarán el algoritmo de generación de claves AUTOINCREMENT. Asegúrese de saber lo que está haciendo antes de emprender tales cambios.

Así que cuando elimines tu tabla y la vuelvas a crear, debes hacer que SQLITE_SEQUENCE se reinicie desde 0.

Usted debe hacer algo como esto:

 Delete from date_difference; Delete from sqlite_sequence where name='date_difference'; 

Cuidado porque el campo 'table name' en la cláusula where distingue entre mayúsculas y minúsculas.

Lea esto para más información.

Defina el campo de clave principal como

 INTEGER PRIMARY KEY AUTOINCREMENT DEFAULT 1 

A continuación, quite el código si está haciendo la inserción de cualquier valor para el campo de clave principal como siguiente

 values.put(KEY_PRIMARY, object.getIntegerValue()); 
  • ¿Cuál es la diferencia entre SQLiteOpenHelper.close () y SQLiteDatabase.close ()?
  • Cómo comprobar tablas de base de datos sqlite en el dispositivo?
  • Android: actualización de la base de datos de usuarios con SQLiteAssetHelper
  • Creo que he llegado con la peor manera de comparar dos fechas; ¿es posible hacerlo mejor?
  • Eliminar todos los datos de todas las tablas de Sugar ORM
  • Varias excepciones al trabajar con bases de datos SQLite
  • Base de datos SQLite de Android con Multi Threading
  • Respecto a la Generación Dinámica de Matemáticas y Ciencias en Textview
  • Columnas únicas en Sugar ORM
  • Almacenar valor largo en la base de datos android
  • Android cola las solicitudes de HTTP mientras la red no está disponible y procesa cuando se enciende
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.