13.1.20.2 CREATE TEMPORARY TABLE

Você pode usar o TEMPORARY palavra-chave quando criar uma tabela. A tabela TEMPORARY é visível apenas dentro da sessão atual, e é descartada automaticamente quando a sessão é fechada. Isto significa que duas sessões diferentes podem usar o mesmo nome temporário da tabela sem entrar em conflito entre si ou com um não-TEMPORARY tabela com o mesmo nome., (A tabela existente é escondida até que a tabela temporária seja retirada.)

InnoDB não suporta tabelas temporárias comprimidos. Quando innodb_strict_mode está activada (predefinição), CREATE TEMPORARY TABLE retorna um erro se o ROW_FORMAT=COMPRESSED ou KEY_BLOCK_SIZE é especificado. Se innodb_strict_mode estiver desactivado, os avisos são emitidos e a tabela temporária é criada usando um formato de linha não comprimido. A opçãoinnodb_file_per-table não afeta a criação deInnoDB tabelas temporárias.,

CREATE TABLE causa um commit implícito, exceto quando usado com o TEMPORARY palavra-chave. Ver secção 13.3.3, “afirmações que causam um Commit implícito”.

TEMPORARY tables have a very loose relationship with databases (schemas). A largada de uma base de dados não deixa cair automaticamente qualquer TEMPORARY tabelas criadas dentro dessa base de dados.

para criar uma tabela temporária, você deve ter o privilégio CREATE TEMPORARY TABLES., Após uma sessão ter criado uma tabela temporária, o servidor não realiza mais verificações de privilégios na tabela. A criação de sessão pode realizar qualquer operação sobre a mesa, como DROP TABLE INSERT UPDATE, ou SELECT.

uma implicação deste comportamento é que uma sessão pode manipular as suas tabelas temporárias, mesmo que o utilizador actual não tenha o privilégio de As criar., Suponha que o usuário atual não tem o CREATE TEMPORARY TABLES privilégio, mas é capaz de executar um definidor de contexto procedimento armazenado que é executado com os privilégios de um usuário que tem o CREATE TEMPORARY TABLES e que cria uma tabela temporária. Enquanto o procedimento executa, a sessão usa os privilégios do Usuário definidor. Após o retorno do procedimento, os privilégios efetivos revertem para os do usuário atual, que ainda pode ver a tabela temporária e realizar qualquer operação nela.,

Você não pode usar CREATE TEMPORY TABLE ... LIKE para criar uma tabela vazia com base na definição de uma tabela que reside no mysql tablespace, InnoDB sistema tablespace (innodb_system), ou um tablespace. A definição do quadro para tal tabela inclui um atributo TABLESPACE que define o quadro onde a tabela reside, e os quadros acima mencionados não suportam tabelas temporárias., Para criar uma tabela temporária com base na definição de como uma tabela, use esta sintaxe alternativa:

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

Suporte TABLESPACE = innodb_file_per_table e TABLESPACE = innodb_temporary cláusulas com CREATE TEMPORARY TABLE está obsoleto desde o MySQL 8.0.13; esperar ele ser removido em uma versão futura do MySQL.