1010 Stimmen

SQLite: Überprüfen ob Tabelle existiert

Info von Stefan Trost | Letztes Update am 22.02.2023 | Erstellt am 01.06.2014

Manchmal möchte man zunächst überprüfen, ob eine bestimmte Tabelle überhaupt existiert, bevor man eine SQL-Anweisung durchführt. Nötig kann dies zum Beispiel sein, bevor man eine Tabelle neu anlegt und sicher sein möchte, dass es eine Tabelle mit diesem Namen noch nicht gibt. Oder wir möchten Daten in eine Tabelle schreiben oder aus einer Tabelle lesen und wissen zu diesem Zeitpunkt noch nicht, ob die betreffende Tabelle bereits existiert. Auch in dieser Situation kann eine Prüfung sinnvoll sein um eine Fehlermeldung zu vermeiden und die Tabelle notfalls neu anlegen zu können.

In diesem Tutorial möchten wir uns ansehen, welche Möglichkeiten uns in diesem Zusammenhang mit SQLite zur Verfügung stehen. Wichtig ist dafür zunächst die von SQLite selbst verwaltete Tabelle "sqlite_master". In dieser Tabelle stehen die Namen aller vorhandenen Tabellen und können darüber auch abgefragt werden.

Hier ist 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.

Temporäre Tabellen

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.

SELECT name FROM sqlite_temp_master WHERE type = 'table' AND name = 'tab_temp';

Hier testen wir auf die Existenz einer temporären Tabelle namens "tab_temp".

Tabelle nur erstellen, wenn sie noch nicht existiert

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 anlegen, 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 in einer eigenen Query prüfen zu müssen.

AntwortenPositivNegativ

Über den Autor

AvatarSoftware von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
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.