Comment définir la valeur initiale d'un champ AUTOINCREMENT dans SQLite?
Réponses
Trop de publicités?À partir de l'SQLite site web:
SQLite garde une trace de la plus grande ROWID qu'une table a jamais tenu à l'aide de la
SQLITE_SEQUENCE
table. L'SQLITE_SEQUENCE
tableau est créé et initialisé automatiquement chaque fois qu'une normale table qui contient une colonne d'auto-incrémentation est créé. Le contenu de l'SQLITE_SEQUENCE
tableau peut être modifié à l'aide d'ordinaire UPDATE, INSERT et DELETE. Mais d'apporter des modifications à cette table sera susceptible de perturber l'auto-incrémentation clé de l'algorithme de génération. Assurez-vous que vous savez ce que vous faites avant de vous lancer dans de telles modifications.
J'ai essayé, et ça fonctionne:
UPDATE SQLITE_SEQUENCE SET seq = <n> WHERE name = '<table>'
Où n+1 est le suivant ROWID que vous voulez et de la table est le nom de la table.
Cela pourrait-il être dangereux pour l'intégrité de ma base de données?
En solution avec la table SQLITE_SEQUENCE, l'entrée dans cette table semble être ajoutée après la première insertion dans la table avec la colonne auto-incrémentée. Dans certains cas, cela peut causer des problèmes (c'est-à-dire que l'auto-incrémentation commence toujours à partir de 1 et non à partir de la valeur souhaitée).