J'ai actuellement une table appelée User qui a une colonne id qui est créée en tant que
"CLÉ PRIMAIRE ENTIÈRE"
Disons que j'ai créé deux utilisateurs pour que la table ait les identifiants 1 et 2
Si je supprime le deuxième utilisateur et en crée un troisième, l'ID est 2, j'ai besoin que ce soit 3
Il semble donc Android sélectionne le prochain identifiant disponible, comment puis-je le changer en un numéro de séquence?
Cordialement
Fais-le INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL
. Voici ce que les docs disent:
Si une colonne a le type INTEGER PRIMARY KEY AUTOINCREMENT alors ... le ROWID choisi pour la nouvelle ligne est au moins un plus grand que le plus grand ROWID qui ait jamais existé auparavant dans cette même table.
Le comportement implémenté par le mot clé AUTOINCREMENT est subtilement différent du comportement par défaut. Avec AUTOINCREMENT, les lignes avec des ROWID sélectionnés automatiquement sont garanties d'avoir des ROWID qui n'ont jamais été utilisés auparavant par la même table dans la même base de données. Et les ROWID générés automatiquement sont garantis en augmentation monotone.
SQLite AUTOINCREMENT
est un mot-clé utilisé pour incrémenter automatiquement une valeur d'un champ dans la table. Nous pouvons incrémenter automatiquement une valeur de champ en utilisant le mot clé AUTOINCREMENT
lors de la création d'une table avec un nom de colonne spécifique pour l'incrémenter automatiquement.
Le mot clé AUTOINCREMENT
ne peut être utilisé qu'avec le champ INTEGER. Syntaxe:
L'utilisation de base du mot clé AUTOINCREMENT
est la suivante:
CREATE TABLE table_name(
column1 INTEGER AUTOINCREMENT,
column2 datatype,
column3 datatype,
.....
columnN datatype,
);
Par exemple, voir ci-dessous: Considérez la table COMPANY
à créer comme suit:
sqlite> CREATE TABLE TB_COMPANY_INFO(
ID INTEGER PRIMARY KEY AUTOINCREMENT,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
Maintenant, insérez les enregistrements suivants dans la table TB_COMPANY_INFO
:
INSERT INTO TB_COMPANY_INFO (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'MANOJ KUMAR', 40, 'Meerut,UP,INDIA', 200000.00 );
Sélectionnez maintenant l'enregistrement
SELECT *FROM TB_COMPANY_INFO
ID NAME AGE ADDRESS SALARY
1 Manoj Kumar 40 Meerut,UP,INDIA 200000.00
Si vous parlez pour Android, oui, les réponses ci-dessus sont correctes, sauf le nom de la colonne id.
database.execSQL("CREATE TABLE IF NOT EXISTS "
+ TableName
+ " ( rowid INTEGER PRIMARY KEY AUTOINCREMENT, Raqam VARCHAR, ChandBor INT(3));");
Il ressemble à Android il doit être nommé 'rowid'. Et avec Cursor vous devez l'instancier comme:
Cursor cursorLcl = database.rawQuery("SELECT *," + TableName + ".rowid AS rowid" + " FROM " +
TableName, null);
Sinon, cela n'a pas fonctionné pour moi. Je ne sais pas pourquoi.