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 ]
Copy

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 ou schema_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:

    1. Dentro do período de retenção do Time Travel, uma tabela descartada pode ser restaurada usando o comando UNDROP TABLE.

    2. 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.

    3. 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.

    4. 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:

    1. Renomear a versão atual da tabela com um nome diferente.

    2. 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 |
|------------+------+---------------+-------------+------+---------+------------+------+-------+-------+----------------|
+------------+------+---------------+-------------+------+---------+------------+------+-------+-------+----------------+
Copy

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). |
+------------------------------------------------------------+
Copy