DROP TABLE¶
Remove uma tabela do esquema atual/especificado, mas retém uma versão da tabela para que ela possa ser recuperada usando UNDROP TABLE. Para obter mais detalhes, consulte Notas de uso (neste tópico).
- Consulte também:
CREATE TABLE , ALTER TABLE , SHOW TABLES , TRUNCATE TABLE , DESCRIBE TABLE
Sintaxe¶
DROP TABLE [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]
Parâmetros¶
name
Especifica o identificador da tabela a ser descartada. Se o identificador contiver espaços, caracteres especiais ou caracteres com letras maiúsculas e minúsculas, toda a cadeia de caracteres deve ser delimitada por aspas duplas. Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas (por exemplo,
"My Object"
).Se o identificador da tabela não estiver totalmente qualificado (na forma de
db_name.schema_name.table_name
ouschema_name.table_name
), o comando procura a tabela no esquema atual para a sessão.CASCADE | RESTRICT
Especifica se a tabela pode ser descartada caso existam chaves estrangeiras que façam referência à tabela:
CASCADE
descarta a tabela mesmo que a tabela tenha chaves primárias/únicas que são referenciadas por chaves estrangeiras em outras tabelas.RESTRICT
retorna um aviso sobre as referências de chave estrangeiras existentes e não descarta a tabela.
Padrão:
CASCADE
Notas de uso¶
O descarte de uma tabela não a remove permanentemente do sistema. Uma versão da tabela descartada é mantida no Time Travel pelo número de dias especificado pelo período de retenção de dados para a tabela:
Dentro do período de retenção do Time Travel, uma tabela descartada pode ser restaurada usando o comando UNDROP TABLE.
Alterar o período de retenção do Time Travel para a conta ou para um objeto pai (ou seja, banco de dados ou esquema) após o descarte de uma tabela não altera o período de retenção do Time Travel para a tabela descartada. Para obter mais informações, consulte a observação no tópico Time Travel.
Quando o período de retenção do Time Travel terminar, o próximo estado para a tabela descartada dependerá se ela é permanente, transitória ou temporária:
Uma tabela permanente é movida para o Fail-safe. No Fail-safe (7 dias), uma tabela descartada pode ser recuperada, mas somente pelo Snowflake. Quando a tabela deixa o Fail-safe, ela é purgada.
Uma tabela transitória ou temporária não tem Fail-safe, por isso é purgada quando sai do Time Travel.
Nota
Uma consulta de longo prazo do Time Travel atrasará a movimentação de quaisquer dados e objetos (tabelas, esquemas e bancos de dados) da conta para o Fail-safe, até que a consulta seja concluída. A purga das tabelas temporárias e transitórias será igualmente atrasada.
Depois que a tabela descartada for purgada, ela não pode ser recuperada; ela deve ser recriada.
Depois de descartar uma tabela, criar uma tabela com o mesmo nome cria uma nova versão da tabela. A versão descartada da tabela anterior ainda pode ser restaurada usando o seguinte método:
Renomear a versão atual da tabela com um nome diferente.
Use o comando UNDROP TABLE para restaurar a versão anterior.
Antes de descartar uma tabela, verifique se nenhuma exibição fazem referência à tabela. Descartar uma tabela referenciada por uma exibição invalida a exibição (isto é, consultar a exibição retorna um erro “objeto não existe”).
Para descartar uma tabela, você deve estar usando uma função que tenha privilégio de propriedade para a tabela.
Exemplos¶
Descartar uma tabela:
SHOW TABLES LIKE 't2%'; +---------------------------------+------+---------------+-------------+-----------+------------+------------+------+-------+--------------+----------------+ | created_on | name | database_name | schema_name | kind | comment | cluster_by | rows | bytes | owner | retention_time | |---------------------------------+------+---------------+-------------+-----------+------------+------------+------+-------+--------------+----------------+ | Tue, 17 Mar 2015 16:48:16 -0700 | T2 | TESTDB | PUBLIC | TABLE | | | 5 | 4096 | PUBLIC | 1 | +---------------------------------+------+---------------+-------------+-----------+------------+------------+------+-------+--------------+----------------+ DROP TABLE t2; +--------------------------+ | status | |--------------------------| | T2 successfully dropped. | +--------------------------+ SHOW TABLES LIKE 't2%'; +------------+------+---------------+-------------+------+---------+------------+------+-------+-------+----------------+ | created_on | name | database_name | schema_name | kind | comment | cluster_by | rows | bytes | owner | retention_time | |------------+------+---------------+-------------+------+---------+------------+------+-------+-------+----------------| +------------+------+---------------+-------------+------+---------+------------+------+-------+-------+----------------+
Descartar a tabela novamente, mas não relatar um erro se a tabela não existir:
DROP TABLE IF EXISTS t2; +------------------------------------------------------------+ | status | |------------------------------------------------------------| | Drop statement executed successfully (T2 already dropped). | +------------------------------------------------------------+