Version de développement
Cette documentation décrit la version « next » (develop), non encore publiée. Pour la version stable, basculez sur « v5 » dans l'en-tête.
Utilisation

Émulation des séquences sur SQLite

Fonctionnement des séquences auto-incrémentées pour les bases de données SQLite dans Dokos

Émulation des séquences sur SQLite

Dokos prend en charge l'utilisation de bases de données SQLite pour les environnements de développement ou les petites installations. Cependant, SQLite ne dispose pas nativement de séquences comme PostgreSQL ou MariaDB. Pour garantir la compatibilité avec les fonctionnalités d'auto-incrémentation (autoname: autoincrement), Dokos émule ce comportement via une table dédiée.

Fonctionnement technique

Une table __frappe_sqlite_sequences est créée automatiquement lors de l'installation ou de la mise à jour de la base de données. Elle stocke les métadonnées des séquences et leur dernière valeur utilisée.

Caractéristiques de l'émulation

  • Auto-initialisation : La séquence se base sur les valeurs existantes dans la table cible pour éviter les conflits.
  • Atomicité : Les incréments sont effectués en une seule requête pour éviter les doublons en cas d'accès concurrents.
  • Limites configurables : Prise en charge des paramètres increment_by, min_value, max_value et cycle.
  • Gestion des erreurs : Une exception SequenceGeneratorLimitExceeded est levée si une séquence plafonnée est épuisée.

Cas d'usage

Cette émulation est transparente pour l'utilisateur final. Elle permet notamment :

  • La création de documents avec des noms auto-incrémentés (ex: FACT-0001, DEVIS-0001).
  • Le bon fonctionnement des tests unitaires sur SQLite.

Configuration

Aucune configuration manuelle n'est nécessaire. La table de séquences est créée via :

  • Le script d'installation (frappe/installer.py).
  • Un patch automatique (frappe/patches.txt) pour les sites existants.

Exemple de flux

Limitations

  • Performances : L'émulation ajoute une requête supplémentaire par insertion de document auto-incrémenté.
  • Compatibilité : Les séquences personnalisées (hors autoname: autoincrement) ne sont pas couvertes par cette implémentation.

::: tip Bon à savoir Cette fonctionnalité est spécifique à SQLite et n'affecte pas les autres bases de données supportées par Dokos. :::