Om een tabel in SQLite neer te zetten, gebruik je de DROP TABLE
verklaring.
Als u deze instructie uitvoert, wordt de tabel uit de database verwijderd. Het wordt volledig verwijderd uit het databaseschema en het schijfbestand. Daarom kan de tafel niet worden hersteld. Alle indices en triggers die aan de tabel zijn gekoppeld, worden ook verwijderd.
Een basis DROP TABLE
Verklaring
Laten we eerst de tabellen in onze database bekijken:
sqlite> .tables Albums Albums1 Albums2 Artists
We hebben een paar vrije tafels van onze vorige oefeningen, dus laten we er een laten vallen.
De volgende code verwijdert de Albums1 tafel:
DROP TABLE Albums1;
Nadat we die code hebben uitgevoerd, kunnen we onze tabellen opnieuw bekijken:
sqlite> .tables Albums Albums2 Artists
De tafel is verwijderd.
Controleer of de tabel bestaat
U kunt de IF EXISTS
. gebruiken om te controleren of de tabel bestaat voordat SQLite deze probeert te verwijderen.
Hierdoor worden fouten voorkomen die normaal zouden worden gegenereerd als de tabel niet bestaat.
Laten we eerst proberen een niet-bestaande tafel te verwijderen zonder met behulp van de IF EXISTS
clausule. Laten we proberen degene die we zojuist hebben laten vallen te laten vallen:
DROP TABLE Album1;
Dit resulteert in het volgende:
sqlite> DROP TABLE Album1; Error: no such table: Album1
OK, dus laten we het opnieuw proberen, maar deze keer met de IF EXISTS
clausule:
DROP TABLE IF EXISTS Album1;
Resultaat:
sqlite> DROP TABLE IF EXISTS Album1; sqlite>
Er gebeurde dus niets. Belangrijk is dat er geen fout is opgetreden.
Laat een tabel met primaire sleutels vallen
Dus wat gebeurt er als we proberen een tabel te verwijderen die primaire sleutels bevat, en er zijn externe sleutels die ernaar verwijzen?
Laten we het proberen:
DROP TABLE Artists;
Resultaat:
sqlite> DROP TABLE Artists; Error: FOREIGN KEY constraint failed
Zoals verwacht is het mislukt. Dus als u een tafel moet verwijderen, moet u eerst alle bijbehorende tafels verwijderen.
SQLite probeert in feite de gegevens te verwijderen voordat het een tabel laat vallen. Het is deze verwijderactie die ervoor zorgt dat eventuele externe sleutelbeperkingen worden gecontroleerd.
SQLite verwijdert ook alle indices of triggers die aan de tabel zijn gekoppeld voordat het de verwijderingsbewerking (en daaropvolgende verwijdering) uitvoert.