Aby upuścić tabelę w SQLite, użyj DROP TABLE
oświadczenie.
Uruchomienie tej instrukcji usuwa tabelę z bazy danych. Jest całkowicie usuwany ze schematu bazy danych i pliku na dysku. Dlatego tabeli nie można odzyskać. Wszystkie indeksy i wyzwalacze powiązane z tabelą również zostaną usunięte.
Podstawowa DROP TABLE
Oświadczenie
Najpierw przejrzyjmy tabele w naszej bazie danych:
sqlite> .tables Albums Albums1 Albums2 Artists
Mamy kilka zapasowych tabel z naszych poprzednich ćwiczeń, więc odrzućmy jeden.
Poniższy kod usuwa Albumy1 tabela:
DROP TABLE Albums1;
Po uruchomieniu tego kodu możemy ponownie przejrzeć nasze tabele:
sqlite> .tables Albums Albums2 Artists
Stół został usunięty.
Sprawdź, czy tabela istnieje
Możesz użyć IF EXISTS
klauzula, aby sprawdzić, czy tabela istnieje, zanim SQLite spróbuje ją usunąć.
Zapobiega to wszelkim błędom, które normalnie byłyby generowane, gdyby tabela nie istniała.
Najpierw spróbujmy usunąć nieistniejącą tabelę bez za pomocą IF EXISTS
klauzula. Spróbujmy odrzucić ten, który właśnie porzuciliśmy:
DROP TABLE Album1;
Skutkuje to następującym:
sqlite> DROP TABLE Album1; Error: no such table: Album1
OK, spróbujmy jeszcze raz, ale tym razem z IF EXISTS
klauzula:
DROP TABLE IF EXISTS Album1;
Wynik:
sqlite> DROP TABLE IF EXISTS Album1; sqlite>
Więc nic się nie stało. Co ważne, nie został zgłoszony żaden błąd.
Upuść tabelę z kluczami podstawowymi
Co się stanie, jeśli spróbujemy usunąć tabelę zawierającą klucze podstawowe, a odwołują się do nich klucze obce?
Spróbujmy:
DROP TABLE Artists;
Wynik:
sqlite> DROP TABLE Artists; Error: FOREIGN KEY constraint failed
Zgodnie z oczekiwaniami, nie powiodło się. Więc jeśli chcesz usunąć tabelę, musisz najpierw usunąć wszystkie powiązane tabele.
SQLite faktycznie próbuje usunąć dane, zanim usunie tabelę. To właśnie ta akcja usuwania powoduje, że wszystkie kontrole klucza obcego mają miejsce.
SQLite usuwa również wszelkie indeksy lub wyzwalacze powiązane z tabelą, zanim wykona operację usunięcia (i późniejszego usunięcia).