web-dev-qa-db-fra.com

SQLite: questions de clé primaire auto-incrémentées

J'ai la requête SQLite suivante:

CREATE TABLE Logs ( Id integer IDENTITY (1, 1) not null CONSTRAINT PKLogId PRIMARY KEY, ...
  1. IDENTITY (1, 1) -> Qu'est-ce que cela signifie? 
  2. PKLogId qu'est-ce que c'est? Cela ne semble être défini nulle part 
  3. Je veux que Id soit integer primary key avec autoincrement. J'aimerais pouvoir insérer dans cette table Logs en omettant la colonne Id dans ma requête. Je veux que Id soit automatiquement ajouté et incrémenté. Est-ce possible? Comment puis-je faire ceci?

Au moment où j'essaye d'insérer sans Id je reçois:

Error while executing query: Logs.Id may not be NULL
15
Caner

Je ne suis pas sûr que vous utilisiez réellement SQLite selon la syntaxe de votre exemple.

Si vous l’êtes, cela pourrait vous intéresser SQLite FAQ # 1: Comment créer un champ AUTOINCREMENT? :

Réponse courte: une colonne déclarée INTEGER PRIMARY KEY sera incrémentation automatique.

56
Bruno

Changez le en:

CREATE TABLE Logs ( Id integer PRIMARY KEY,....
11
Michał Powaga

Si vous l’êtes, SQLite FAQ # 1 vous intéresse peut-être: comment créer un champ AUTOINCREMENT ?:

Réponse courte: Une colonne déclarée INTEGER PRIMARY KEY sera incrémentée automatiquement.

Cela n’est pas tout à fait exact. Une clé primaire entière sera effectivement incrémentée. Toutefois, si la table supprime toutes les lignes, elle recommence depuis le début. Il est important si vous voulez que tous les enregistrements associés soient liés correctement pour utiliser la description d'auto-incrémentation après la déclaration de clé primaire sur le champ entier . 

0
Doc Maynord