13.1.20.2 CREATE TEMPORARY TABLE Statement
È possibile utilizzare la parola chiave TEMPORARY
quando si crea una tabella. Una tabellaTEMPORARY
è visibile solo all’interno della sessione corrente e viene eliminata automaticamente quando la sessione viene chiusa. Ciò significa che due sessioni diverse possono utilizzare lo stesso nome di tabella temporanea senza entrare in conflitto tra loro o con una tabella nonTEMPORARY
esistente con lo stesso nome., (La tabella esistente viene nascosta fino a quando la tabella temporanea non viene eliminata.)
InnoDB
non supporta tabelle temporanee compresse. Quandoinnodb_strict_mode
è abilitato (il valore predefinito),CREATE TEMPORARY TABLE
restituisce un errore seROW_FORMAT=COMPRESSED
oKEY_BLOCK_SIZE
è specificato. Seinnodb_strict_mode
è disabilitato, vengono emessi avvisi e la tabella temporanea viene creata utilizzando un formato di riga non compresso. L’opzioneinnodb_file_per-table
non influisce sulla creazione diInnoDB
tabelle temporanee.,
CREATE TABLE
causa un commit implicito, tranne quando viene utilizzato con la parola chiave TEMPORARY
. Vedere Sezione 13.3.3, “Istruzioni che causano un commit implicito”.
TEMPORARY
le tabelle hanno una relazione molto allentata con i database (schemi). L’eliminazione di un database non rilascia automaticamente alcuna tabellaTEMPORARY
creata all’interno di tale database.
Per creare una tabella temporanea, è necessario disporre del privilegio CREATE TEMPORARY TABLES
., Dopo che una sessione ha creato una tabella temporanea, il server non esegue ulteriori controlli dei privilegi sulla tabella. La sessione di creazione può eseguire qualsiasi operazione sulla tabella, ad esempioDROP TABLE
,INSERT
,UPDATE
oSELECT
.
Un’implicazione di questo comportamento è che una sessione può manipolare le sue tabelle temporanee anche se l’utente corrente non ha alcun privilegio per crearle., Supponiamo che l’utente corrente non abbia il privilegio CREATE TEMPORARY TABLES
ma sia in grado di eseguire una stored procedure definer-context che viene eseguita con i privilegi di un utente che ha CREATE TEMPORARY TABLES
e che crea una tabella temporanea. Durante l’esecuzione della procedura, la sessione utilizza i privilegi dell’utente che definisce. Dopo il ritorno della procedura, i privilegi effettivi tornano a quelli dell’utente corrente, che può ancora vedere la tabella temporanea ed eseguire qualsiasi operazione su di essa.,
È possibile utilizzare CREATE TEMPORY TABLE ... LIKE
per creare una tabella vuota, basata sulla definizione di una tabella che si trova nel mysql
tablespace, InnoDB
sistema di tablespace (innodb_system
), o in generale tablespace. La definizione di tablespace per tale tabella include un attributo TABLESPACE
che definisce il tablespace in cui risiede la tabella e i tablespace di cui sopra non supportano le tabelle temporanee., Per creare una tabella temporanea, basata sulla definizione di una tabella, utilizzare invece questa sintassi:
CREATE TEMPORARY TABLE new_tbl SELECT * FROM orig_tbl LIMIT 0;
Supporto TABLESPACE = innodb_file_per_table
e TABLESPACE = innodb_temporary
clausole con CREATE TEMPORARY TABLE
è deprecato come di MySQL 8.0.13, si aspettano di essere in una futura versione di MySQL.
Lascia un commento