MariaDB - Séquences

Dans la version 10.0.3, MariaDB a introduit un moteur de stockage appelé séquence. Son ad hoc génère une séquence d'entiers pour les opérations, puis il se termine. La séquence contient des entiers positifs par ordre décroissant ou croissant et utilise une valeur de début, de fin et d'incrémentation.

Il n'autorise pas l'utilisation dans plusieurs requêtes, uniquement dans sa requête d'origine en raison de sa nature virtuelle (non écrite sur le disque). Cependant, les tables de séquence peuvent être converties en tables standard via une commande ALTER. Si une table convertie est supprimée, la table de séquence existe toujours. Les séquences ne peuvent pas non plus produire de nombres négatifs ou tourner au minimum / maximum.

Installation du moteur de séquence

L'utilisation de séquences nécessite l'installation du moteur de séquence, que MariaDB distribue sous forme de plugin plutôt que binaire. Installez-le avec la commande suivante -

INSTALL SONAME "ha_sequence";

Après l'installation, vérifiez-le -

SHOW ENGINES\G

N'oubliez pas qu'après l'installation du moteur, vous ne pouvez pas créer une table standard avec un nom qui utilise la syntaxe de séquence, mais vous pouvez créer une table temporaire avec un nom de syntaxe de séquence.

Créer une séquence

Il existe deux méthodes de création de séquence -

  • Créez une table et utilisez l'attribut AUTO_INCREMENT pour définir une colonne comme incrémentation automatique.

  • Utilisez une base de données existante et utilisez une requête SELECT de séquence pour produire une séquence. La requête utilise la syntaxe seq_ [FROM] _to_ [TO] ou seq_ [FROM] _to_ [TO] _step_STEP.

Les meilleures pratiques préfèrent l'utilisation de la deuxième méthode. Passez en revue un exemple de création de séquence donné ci-dessous -

SELECT * FROM seq_77_to_99;

Les séquences ont de nombreuses utilisations -

  • Localisez les valeurs manquantes dans une colonne pour vous protéger contre les problèmes liés aux opérations -

SELECT myseq.seq FROM seq_22_to_28 myseq LEFT JOIN table1 t ON myseq.seq
   = x.y WHERE x.y IS NULL;
  • Construire une combinaison de valeurs -

SELECT x1.seq, x2.seq FROM seq_5_to_9 x1 JOIN seq_5_to_9 x2 ORDER BY 5, 6;
  • Trouver des multiples d'un nombre -

SELECT seq FROM seq_3_to_100_step_4;
  • Construisez une séquence de dates à utiliser dans des applications telles que les systèmes de réservation.
  • Construisez une séquence temporelle.