13.1.20.2 CREATE TEMPORARY TABLE Statement

Vous pouvez utiliser le mot clé TEMPORARYlors de la création d’une table. Une tableTEMPORARY n’est visible que dans la session en cours et est supprimée automatiquement lorsque la session est fermée. Cela signifie que deux sessions différentes peuvent utiliser le même nom de table temporaire sans entrer en conflit entre elles ou avec une table existante non-TEMPORARY du même nom., (La table existante est masquée jusqu’à ce que la table temporaire soit supprimée.)

InnoDB ne prend pas en charge les tables temporaires compressées. Lorsque innodb_strict_mode est activé (valeur par défaut), CREATE TEMPORARY TABLE renvoie une erreur si le ROW_FORMAT=COMPRESSED ou KEY_BLOCK_SIZE est spécifié. Si innodb_strict_mode est désactivé, des avertissements sont émis et la table temporaire est créée en utilisant un format de ligne non compressé. La balise innodb_file_per-table option n’affecte pas la création de InnoDB tables temporaires.,

CREATE TABLE provoque un commit implicite, sauf lorsqu’il est utilisé avec la balise TEMPORARY mot clé. Voir Section 13.3.3, « instructions qui provoquent un Commit implicite ».

TEMPORARY les tables ont une relation très lâche avec les bases de données (schémas). La suppression d’une base de données ne supprime pas automatiquement les tables TEMPORARY créées dans cette base de données.

Pour créer une table temporaire, vous devez avoir le CREATE TEMPORARY TABLES privilège., Une fois qu’une session a créé une table temporaire, le serveur n’effectue aucune autre vérification des privilèges sur la table. La création de session peut effectuer toute opération sur la table, tels que le DROP TABLE, INSERT, UPDATE ou SELECT.

une implication de ce comportement est qu’une session peut manipuler ses tables temporaires même si l’utilisateur actuel n’a pas le privilège de les créer., Supposons que l’utilisateur actuel n’a pas la balise CREATE TEMPORARY TABLES privilège, mais est capable d’exécuter définissant le contexte de la procédure stockée s’exécute avec les privilèges d’un utilisateur qui n’ont CREATE TEMPORARY TABLES et qui crée une table temporaire. Pendant l’exécution de la procédure, la session utilise les privilèges de l’utilisateur définissant. Après le retour de la procédure, les privilèges effectifs reviennent à ceux de l’utilisateur actuel, qui peut toujours voir la table temporaire et effectuer toute opération sur elle.,

vous ne pouvez pas utiliser CREATE TEMPORY TABLE ... LIKE pour créer une table vide basée sur la définition d’une table qui réside dans l’espace de table mysql, InnoDB espace de table système (innodb_system) espace de table. La définition d’espace de table pour une telle table inclut un attributTABLESPACE qui définit l’espace de table où réside la table, et les espaces de table susmentionnés ne prennent pas en charge les tables temporaires., Pour créer une table temporaire basée sur la définition d’une telle table, utilisez cette syntaxe:

CREATE TEMPORARY TABLE new_tbl SELECT * FROM orig_tbl LIMIT 0;
Note

Soutien TABLESPACE = innodb_file_per_table et TABLESPACE = innodb_temporary articles CREATE TEMPORARY TABLE est obsolète depuis MySQL 8.0.13; attendez-elle être supprimée dans une future version de MySQL.