13.1.20.2 CREATE TEMPORARY TABLE Statement
13.1.20.2 CREATE TEMPORARY TABLE Statement
Vous pouvez utiliser le mot clé TEMPORARY
lors 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;
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.
Laisser un commentaire