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;
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.
Deixe uma resposta