För att släppa en tabell i SQLite, använd DROP TABLE
uttalande.
Att köra denna sats tar bort tabellen från databasen. Den är helt borttagen från databasschemat och diskfilen. Därför kan tabellen inte återställas. Alla index och triggers associerade med tabellen raderas också.
En grundläggande DROP TABLE
Uttalande
Låt oss först granska tabellerna i vår databas:
sqlite> .tables Albums Albums1 Albums2 Artists
Vi har ett par lediga bord från våra tidigare övningar, så låt oss släppa ett.
Följande kod tar bort Album1 tabell:
DROP TABLE Albums1;
Efter att ha kört den koden kan vi granska våra tabeller igen:
sqlite> .tables Albums Albums2 Artists
Tabellen har tagits bort.
Kontrollera om tabellen finns
Du kan använda koden IF EXISTS
sats för att kontrollera om tabellen finns innan SQLite försöker släppa den.
Genom att göra detta förhindrar du alla fel som normalt skulle genereras om tabellen inte finns.
Låt oss först försöka släppa en icke-existerande tabell utan med hjälp av IF EXISTS
klausul. Låt oss försöka släppa den vi just släppte:
DROP TABLE Album1;
Detta resulterar i följande:
sqlite> DROP TABLE Album1; Error: no such table: Album1
OK, så låt oss försöka igen, men den här gången med IF EXISTS
klausul:
DROP TABLE IF EXISTS Album1;
Resultat:
sqlite> DROP TABLE IF EXISTS Album1; sqlite>
Så ingenting hände. Viktigt är att inget fel skapades.
Släpp en tabell med primära nycklar
Så vad händer om vi försöker släppa en tabell som innehåller primärnycklar och det finns främmande nycklar som refererar till dem?
Låt oss prova det:
DROP TABLE Artists;
Resultat:
sqlite> DROP TABLE Artists; Error: FOREIGN KEY constraint failed
Som väntat misslyckades det. Så om du behöver släppa en tabell måste du släppa alla tillhörande tabeller först.
SQLite försöker faktiskt ta bort data innan den släpper en tabell. Det är den här borttagningsåtgärden som gör att kontroller av främmande nycklar sker.
SQLite tar också bort alla index eller triggers som är associerade med tabellen innan den utför borttagningen (och efterföljande släpp).