MariaDB - Tables temporaires

Certaines opérations peuvent bénéficier de tables temporaires en raison de la vitesse ou des données jetables. La vie d'une table temporaire se termine à la fin d'une session, que vous l'utilisiez depuis l'invite de commande, avec un script PHP ou via un programme client. Il n'apparaît pas non plus dans le système de manière typique. La commande SHOW TABLES ne révélera pas une liste contenant des tables temporaires.

Créer une table temporaire

Le mot clé TEMPORARY dans une instruction CREATE TABLE génère une table temporaire. Passez en revue un exemple donné ci-dessous -

mysql>CREATE TEMPORARY TABLE order (
   item_name VARCHAR(50) NOT NULL
   , price DECIMAL(7,2) NOT NULL DEFAULT 0.00
   , quantity INT UNSIGNED NOT NULL DEFAULT 0
);

En créant une table temporaire, vous pouvez cloner des tables existantes, c'est-à-dire toutes leurs caractéristiques générales, avec la clause LIKE. L'instruction CREATE TABLE utilisée pour générer la table temporaire ne validera pas les transactions en raison du mot clé TEMPORARY.

Bien que les tables temporaires se distinguent des tables non temporaires et disparaissent à la fin d'une session, elles peuvent avoir certains conflits -

  • Ils sont parfois en conflit avec les tables temporaires fantômes de sessions expirées.

  • Ils sont parfois en conflit avec les noms d'ombre de tables non temporaires.

Note - Les tables temporaires peuvent avoir le même nom qu'une table non temporaire existante car MariaDB la considère comme une référence de différence.

Administration

MariaDB nécessite l'octroi de privilèges aux utilisateurs pour créer des tables temporaires. Utilisez une instruction GRANT pour accorder ce privilège aux utilisateurs non administrateurs.

GRANT CREATE TEMPORARY TABLES ON orders TO 'machine122'@'localhost';

Supprimer une table temporaire

Bien que les tables temporaires soient essentiellement supprimées à la fin des sessions, vous avez la possibilité de les supprimer. La suppression d'une table temporaire nécessite l'utilisation du mot clé TEMPORARY et les meilleures pratiques suggèrent de supprimer les tables temporaires avant toute table non temporaire.

mysql> DROP TABLE order;