DROP TABLE - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

DROP TABLE

Rimuove una tabella da un database.

Se stai cercando di svuotare una tabella di righe, senza rimuovere la tabella, usa il comando DELETE oTRUNCATE.

DROPTABLErimuove i vincoli esistenti nella tabella di destinazione. È possibile rimuovere più tabelle con un solo DROP TABLE comando.

DROPTABLEcon una tabella esterna non può essere eseguito all'interno di una transazione (BEGIN...END). Per ulteriori informazioni sulle transazioni, consultare Isolamento serializzabile.

Per trovare un esempio in cui il DROP privilegio è concesso a un gruppo, vedi GRANTEsempi.

Privilegi richiesti

Di seguito sono riportati i privilegi richiesti per: DROP TABLE

  • Superuser

  • Utenti con il privilegio DROP TABLE

  • Proprietario della tabella con il USAGE privilegio sullo schema

Sintassi

DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

Parametri

SE EXISTS

Clausola che indica che se la tabella specificata non esiste, il comando non deve apportare modifiche e deve restituire un messaggio che la tabella non esiste, piuttosto che terminare con un errore.

Questa clausola è utile per la creazione di script, quindi lo script non ha esito negativo se DROP TABLE viene eseguito su una tabella inesistente.

name

Nome della tabella da rimuovere.

CASCADE

Clausola che indica di rimuovere automaticamente gli oggetti che dipendono dalla tabella, come le viste.

Per creare una vista che non dipenda da altri oggetti del database, come viste e tabelle, includi la SCHEMA BINDING clausola WITH NO nella definizione della vista. Per ulteriori informazioni, consulta CREATE VIEW.

RESTRICT

Clausola che indica di non eliminare la tabella se sono presenti oggetti che dipendono da essa. Questa operazione costituisce l'impostazione predefinita.

Esempi

Rimozione di una tabella senza dipendenze

L'esempio seguente crea ed elimina una tabella chiamata FEEDBACK che non ha dipendenze:

create table feedback(a int); drop table feedback;

Se una tabella contiene colonne a cui fanno riferimento le viste o altre tabelle, Amazon Redshift visualizza un messaggio come il seguente.

Invalid operation: cannot drop table feedback because other objects depend on it

Rimozione simultanea di due tabelle

Il seguente set di comandi crea una FEEDBACK tabella e una BUYERS tabella, quindi elimina entrambe le tabelle con un solo comando:

create table feedback(a int); create table buyers(a int); drop table feedback, buyers;

Rimozione di una tabella con una dipendenza

I passaggi seguenti mostrano come eliminare una tabella chiamata FEEDBACK utilizzando lo CASCADE switch.

Per prima cosa, create una tabella semplice chiamata FEEDBACK usando il CREATE TABLE comando:

create table feedback(a int);

Quindi, usa il CREATE VIEW comando per creare una vista chiamata FEEDBACK _ VIEW che si basa sulla tabellaFEEDBACK:

create view feedback_view as select * from feedback;

L'esempio seguente elimina la tabella FEEDBACK e anche la vista FEEDBACK _VIEW, VIEW perché FEEDBACK _ dipende dalla tabellaFEEDBACK:

drop table feedback cascade;

Visualizzazione delle dipendenze per una tabella

Per restituire le dipendenze per la tabella, utilizza l'esempio seguente. Replace (Sostituisci) my_schema e my_table con il tuo schema e la tua tabella.

SELECT dependent_ns.nspname as dependent_schema , dependent_view.relname as dependent_view , source_ns.nspname as source_schema , source_table.relname as source_table , pg_attribute.attname as column_name FROM pg_depend JOIN pg_rewrite ON pg_depend.objid = pg_rewrite.oid JOIN pg_class as dependent_view ON pg_rewrite.ev_class = dependent_view.oid JOIN pg_class as source_table ON pg_depend.refobjid = source_table.oid JOIN pg_attribute ON pg_depend.refobjid = pg_attribute.attrelid AND pg_depend.refobjsubid = pg_attribute.attnum JOIN pg_namespace dependent_ns ON dependent_ns.oid = dependent_view.relnamespace JOIN pg_namespace source_ns ON source_ns.oid = source_table.relnamespace WHERE source_ns.nspname = 'my_schema' AND source_table.relname = 'my_table' AND pg_attribute.attnum > 0 ORDER BY 1,2 LIMIT 10;

Far cadere my_table e le sue dipendenze, usa l'esempio seguente. Questo esempio restituisce anche tutte le dipendenze per la tabella che è stata rilasciata.

DROP TABLE my_table CASCADE; SELECT dependent_ns.nspname as dependent_schema , dependent_view.relname as dependent_view , source_ns.nspname as source_schema , source_table.relname as source_table , pg_attribute.attname as column_name FROM pg_depend JOIN pg_rewrite ON pg_depend.objid = pg_rewrite.oid JOIN pg_class as dependent_view ON pg_rewrite.ev_class = dependent_view.oid JOIN pg_class as source_table ON pg_depend.refobjid = source_table.oid JOIN pg_attribute ON pg_depend.refobjid = pg_attribute.attrelid AND pg_depend.refobjsubid = pg_attribute.attnum JOIN pg_namespace dependent_ns ON dependent_ns.oid = dependent_view.relnamespace JOIN pg_namespace source_ns ON source_ns.oid = source_table.relnamespace WHERE source_ns.nspname = 'my_schema' AND source_table.relname = 'my_table' AND pg_attribute.attnum > 0 ORDER BY 1,2 LIMIT 10; +------------------+----------------+---------------+--------------+-------------+ | dependent_schema | dependent_view | source_schema | source_table | column_name | +------------------+----------------+---------------+--------------+-------------+

Eliminare una tabella utilizzando IF EXISTS

L'esempio seguente elimina la FEEDBACK tabella se esiste o non fa nulla e restituisce un messaggio in caso contrario:

drop table if exists feedback;