13.1.20.2 CREA TABEL TEMPORAR Declarație

puteți folosi TEMPORARY cuvinte cheie atunci când se creează un tabel. Un tabel TEMPORARY este vizibil numai în cadrul sesiunii curente și este abandonat automat atunci când sesiunea este închisă. Aceasta înseamnă că două sesiuni diferite pot utiliza același nume de tabel temporar fără a intra în conflict între ele sau cu un tabel non-TEMPORARY cu același nume., (Tabelul existent este ascuns până când tabelul temporar este abandonat.)

InnoDB nu acceptă tabele temporare comprimate. Când innodb_strict_mode este activată (implicit), CREATE TEMPORARY TABLE returnează o eroare dacă ROW_FORMAT=COMPRESSED sau KEY_BLOCK_SIZE este specificat. Dacă innodb_strict_mode este dezactivat, avertismentele sunt emise și tabelul temporar este creat folosind un format de rând necomprimat. Opțiunea innodb_file_per-table nu afectează crearea tabelelor temporare InnoDB.,

CREATE TABLE provoacă o comitere implicită, cu excepția cazului în care este utilizat cu cuvântul cheie TEMPORARY. A se vedea secțiunea 13.3.3, „declarații care provoacă o comitere implicită”.

TEMPORARY tabelele au o relație foarte liberă cu bazele de date (scheme). Dropping o bază de date nu scade automat orice TEMPORARY tabele create în baza de date. pentru a crea un tabel temporar, trebuie să aveți privilegiul CREATE TEMPORARY TABLES., După ce o sesiune a creat un tabel temporar, serverul nu mai efectuează verificări de privilegii pe masă. Crearea sesiune poate efectua orice operațiune pe masă, cum ar fi DROP TABLE, INSERT, UPDATE sau SELECT. o implicație a acestui comportament este că o sesiune poate manipula tabelele sale temporare, chiar dacă utilizatorul curent nu are privilegiul de a le crea., Să presupunem că utilizatorul curent nu are CREATE TEMPORARY TABLES privilegiu, dar este capabil de a executa un contur dintr-un context proceduri stocate care se execută cu privilegiile unui utilizator care are CREATE TEMPORARY TABLES și care creează un tabel temporar. În timp ce procedura se execută, sesiunea folosește privilegiile utilizatorului definitoriu. După revenirea procedurii, privilegiile efective revin la cele ale utilizatorului curent, care poate vedea în continuare tabelul temporar și poate efectua orice operație pe acesta.,

nu puteți utiliza CREATE TEMPORY TABLE ... LIKE pentru a crea un tabel gol bazează pe definirea unui tabel care se află în mysql tabelă, InnoDB sistem tabelă (innodb_system), sau un general tabelă. Definiția tablespace pentru un astfel de tabel include un atribut TABLESPACE care definește spațiul de tabele în care se află tabelul, iar tabelele menționate anterior nu acceptă tabele temporare., Pentru a crea un tabel temporar, bazat pe definirea unor astfel de tabel, utilizați această sintaxă în loc:

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

Suport pentru TABLESPACE = innodb_file_per_table și TABLESPACE = innodb_temporary clauze cu CREATE TEMPORARY TABLE este învechită începând cu MySQL 8.0.13; se așteaptă ca acesta să fie eliminat într-o viitoare versiune de MySQL.