44 Stimmen

SQLite: Überprüfen ob Tabelle existiert

Info von SmartUser | 01.06.2014 um 10:23

Fragestellung: Bevor wir Daten in eine Tabelle schreiben oder aus der Tabelle lesen, möchten wir überprüfen, ob diese Tabelle überhaupt existiert um keinen Fehler zu verursachen.

Lösung: Die Namen der vorhandenen Tabellen stehen in "sqlite_master" und können dort abgefragt werden. Hier ein Beispiel, wie wir das Vorhandensein der Tabelle "tab" überprüfen können.

SELECT name FROM sqlite_master WHERE type='table' AND name='tab';

Ist das Ergebnis dieser Abfrage leer, wissen wir, dass die Tabelle nicht existiert. 

Wichtig: Temporäre Tabellen stehen nicht in "sqlite_master", sie befinden sich in "sqlite_temp_master". Sind wir an einer temporären Tabelle interessiert, können wir in der Abfrage oben einfach "sqlite_master" durch "sqlite_temp_master" austauschen.

Alternativer Vorschlag: Für einige Szenarien existieren einfachere Lösungen. Stellen wir uns zum Beispiel vor, dass ein Programm einige Tabellen in einer Datenbank benötigt. Zum Zeitpunkt des Programmstarts ist unklar, ob das Programm schon einmal gestartet wurde und ob die betreffenden Tabellen bereits angelegt sind. Daher möchten wir überprüfen, ob eine bestimmte Tabelle schon existiert und die Tabelle nur dann einlegen, falls nicht.

CREATE TABLE IF NOT EXISTS 'tab' (...);

Für diesen Fall würde sich eher das Statement "CREATE TABLE IF NOT EXISTS" anbieten. Dieses Statement entspricht dem "CREATE TABLE"-Statement, ist aber ergänzt durch "IF NOT EXISTS". Das bedeutet, dass die neue Tabelle nur dann angelegt wird, wenn sie noch nicht existiert. Damit erspart man sich den Umweg, dies zunächst prüfen zu müssen.

AntwortenPositivNegativ

Über den Autor

AvatarDer Autor hat keine Kurzbeschreibung seines Profils angegeben.
Profil anzeigen

 

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.