Chcete-li zrušit tabulku v SQLite, použijte DROP TABLE
prohlášení.
Spuštění tohoto příkazu odebere tabulku z databáze. Je zcela odstraněn ze schématu databáze a souboru na disku. Proto nelze tabulku obnovit. Všechny indexy a spouštěče přidružené k tabulce jsou také odstraněny.
Základní DROP TABLE
Prohlášení
Nejprve si projdeme tabulky v naší databázi:
sqlite> .tables Albums Albums1 Albums2 Artists
Máme pár volných stolů z našich předchozích cvičení, takže jeden zahodíme.
Následující kód odstraní Albums1 tabulka:
DROP TABLE Albums1;
Po spuštění tohoto kódu můžeme znovu zkontrolovat naše tabulky:
sqlite> .tables Albums Albums2 Artists
Tabulka byla odstraněna.
Zkontrolujte, zda tabulka existuje
Můžete použít IF EXISTS
klauzule ke kontrole, zda tabulka existuje, než se ji SQLite pokusí zrušit.
Tím zabráníte chybám, které by se normálně vygenerovaly, pokud tabulka neexistuje.
Nejprve zkusme zahodit neexistující tabulku bez pomocí IF EXISTS
doložka. Zkusme zahodit ten, který jsme právě upustili:
DROP TABLE Album1;
Výsledkem je následující:
sqlite> DROP TABLE Album1; Error: no such table: Album1
Dobře, tak to zkusíme znovu, ale tentokrát s IF EXISTS
klauzule:
DROP TABLE IF EXISTS Album1;
Výsledek:
sqlite> DROP TABLE IF EXISTS Album1; sqlite>
Takže se nic nestalo. Důležité je, že nebyla vyvolána žádná chyba.
Vypustit tabulku s primárními klíči
Co se tedy stane, když se pokusíme zrušit tabulku, která obsahuje primární klíče a na ně odkazují cizí klíče?
Zkusme to:
DROP TABLE Artists;
Výsledek:
sqlite> DROP TABLE Artists; Error: FOREIGN KEY constraint failed
Podle očekávání se to nepodařilo. Pokud tedy potřebujete zrušit tabulku, budete muset nejprve zrušit všechny související tabulky.
SQLite se ve skutečnosti pokouší smazat data předtím, než vypustí tabulku. Je to tato akce odstranění, která způsobí provedení jakýchkoli kontrol omezení cizího klíče.
SQLite také zruší všechny indexy nebo spouštěče spojené s tabulkou předtím, než provede operaci odstranění (a následné odstranění).