Maison >base de données >tutoriel mysql >Comment puis-je incrémenter automatiquement un champ de clé non primaire dans SQLite ?
Dans SQLite, il peut être souhaitable qu'un champ de clé non primaire soit automatiquement incrémenté à chaque insertion, obtenir un comportement similaire aux clés primaires à incrémentation automatique. Cela permet la gestion de valeurs séquentielles au sein d'une table.
Pour y parvenir, une solution de contournement peut être mise en œuvre en exploitant la fonction d'agrégation MAX(). Considérons le scénario suivant : une table de journal avec une clé primaire (id) à usage interne et un numéro de révision (rev_no) qui doit être auto-incrémenté.
CREATE TABLE Log( id INTEGER PRIMARY KEY, rev_no INT );
Pour insérer une nouvelle entrée de journal avec un numéro de révision auto-incrémenté, nous pouvons utiliser l'instruction SQL suivante :
INSERT INTO Log (id, rev_no, description) VALUES ((SELECT MAX(id) + 1 FROM Log), 'rev_Id', 'some description');
Cette instruction calcule d'abord la valeur d'identification maximale dans la table Log et y ajoute 1, générant efficacement le prochain numéro de révision disponible. La valeur résultante est ensuite utilisée comme rev_no pour la nouvelle entrée de journal.
Une approche alternative peut être utilisée pour gérer les tables vides :
INSERT INTO Log (id, rev_no, description) VALUES ((SELECT IFNULL(MAX(id), 0) + 1 FROM Log), 'rev_Id', 'some description');
Cette instruction modifiée utilise la fonction IFNULL() pour garantir que la valeur d'identification maximale est calculée, même si la table est vide. Par défaut, il renverra 0.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!