L’istruzione SQL DROP TABLE consente di eliminare una tabella dal database. Se la tabella non esisteva, il tentativo di eliminarla causerebbe un errore.
L’istruzione SQL DROP TABLE IF EXISTS consente di verificare che la tabella esista prima di tentare di eliminare (eliminare) la tabella. Se la tabella non esiste, l’istruzione DROP TABLE non viene eseguita, quindi non si verifica alcun errore.,
Sintassi
La sintassi può variare leggermente a seconda del database in esecuzione.
SQL Server
DROP TABLE TableName
DROP IF EXISTS è disponibile solo da SQL Server 2016 in poi.
MySQL
DROP TABLE TableName
La parola chiave TEMPORANEA può essere utilizzata in MySQL per specificare che solo una tabella temporanea può essere eliminata.,
Esempi di utilizzo di DROP TABLE IF EXISTS
Esempio 1 – Eliminazione di una tabella utilizzando DROP TABLE IF EXISTS clausola
Esempio 2 – Errore che si verifica quando si utilizza l’istruzione DROP TABLE senza SE ESISTE la clausola
-- if we attempt to DROP the table that we just created and dropped then we will get an errorDROP TABLE dbo.Country;
viene restituito L’errore: Impossibile eliminare la tabella ‘dbo.Paese’, perché non esiste o non si dispone di autorizzazione.,
Esempio 3 – Utilizzo con tabelle temporanee in SQL Server
Esempio 4 – Utilizzo con tabelle temporanee in MySQL
-- temp table MySQLCREATE TEMPORARY TABLE Continent( Id INT PRIMARY KEY, Continent varchar(50));DROP TEMPORARY TABLE IF EXISTS Continent;
Metodi alternativi per eliminare una tabella con un controllo exists
È possibile utilizzare l’INFORMATION_SCHEMA del database per eseguire la stessa funzionalità. Questo metodo è supportato dalla maggior parte dei database majore tra cui SQL Server, MySQL, Oracle, PostGres, IBM DB2. INFORMATION_SCHEMA è conforme ANSI SQL ed è destinato a consentire la ricerca di informazioni sugli oggetti del database.,
IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'Country' AND TABLE_SCHEMA = 'dbo') DROP TABLE dbo.Country;
Se si esegue una versione di SQL Server precedente a SQL Server 2016, è possibile utilizzare il seguente metodo per ottenere lo stesso scopo della TABELLA DROP SE ESISTE. Ciò comporta l’utilizzo di un’istruzione IF in combinazione con la funzione OBJECT_ID. Il secondo parametro della funzione OBJECT_ID viene passato a ‘u’. Questo rappresenta il tipo di oggetto da controllare e in questo caso ‘u’ sta per una ‘tabella definita dall’utente’.,
Conclusione
Abbiamo visto in questo articolo come l’uso della clausola IF EXISTS con l’istruzione DROP TABLE fornisce un semplice metodo a una riga per verificare se una tabella esiste prima di tentare la sua eliminazione. Il metodo DROP IF EXISTS può essere utilizzato anche con altri tipi di oggetti di database per consentire un approccio semplice e coerente alla scrittura di istruzioni DDL (Data Definition Language) nel codice SQL.,
Se si esegue una piattaforma di database che non supporta DROP SE ESISTE, abbiamo esplorato un paio di metodi alternativi che è possibile utilizzare per ottenere gli stessi risultati anche se in modo meno conciso.
segnala questo annuncio