Per eliminare una tabella in SQLite, usa DROP TABLE
dichiarazione.
L'esecuzione di questa istruzione rimuove la tabella dal database. Viene completamente rimosso dallo schema del database e dal file del disco. Pertanto la tabella non può essere recuperata. Vengono eliminati anche tutti gli indici e i trigger associati alla tabella.
Un DROP TABLE
di base Dichiarazione
Per prima cosa, esaminiamo le tabelle nel nostro database:
sqlite> .tables Albums Albums1 Albums2 Artists
Abbiamo un paio di tavoli liberi dei nostri esercizi precedenti, quindi lasciamocene uno.
Il codice seguente elimina gli Albums1 tabella:
DROP TABLE Albums1;
Dopo aver eseguito quel codice, possiamo rivedere le nostre tabelle:
sqlite> .tables Albums Albums2 Artists
La tabella è stata rimossa.
Verifica se la tabella esiste
Puoi usare il IF EXISTS
clausola per verificare se la tabella esiste prima che SQLite tenti di eliminarla.
In questo modo si evitano eventuali errori che verrebbero normalmente generati se la tabella non esiste.
Per prima cosa, proviamo a eliminare una tabella inesistente senza usando il IF EXISTS
clausola. Proviamo a eliminare quello che abbiamo appena lasciato:
DROP TABLE Album1;
Ciò si traduce in quanto segue:
sqlite> DROP TABLE Album1; Error: no such table: Album1
OK, quindi riproviamo, ma questa volta con IF EXISTS
clausola:
DROP TABLE IF EXISTS Album1;
Risultato:
sqlite> DROP TABLE IF EXISTS Album1; sqlite>
Quindi non è successo niente. È importante sottolineare che non è stato generato alcun errore.
Rilascia una tabella con chiavi primarie
Quindi cosa succede se proviamo a eliminare una tabella che contiene chiavi primarie e ci sono chiavi esterne che fanno riferimento ad esse?
Proviamolo:
DROP TABLE Artists;
Risultato:
sqlite> DROP TABLE Artists; Error: FOREIGN KEY constraint failed
Come previsto, ha fallito. Quindi, se devi eliminare una tabella, dovrai prima eliminare tutte le tabelle associate.
SQLite tenta effettivamente di eliminare i dati prima di eliminare una tabella. È questa azione di eliminazione che determina l'esecuzione di qualsiasi controllo dei vincoli di chiave esterna.
SQLite elimina anche tutti gli indici o i trigger associati alla tabella prima di eseguire l'operazione di eliminazione (e successiva eliminazione).