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;
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.
Lasă un răspuns