Existenz einer Datenbank-Tabelle feststellen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Aries
User
Beiträge: 51
Registriert: Mittwoch 21. August 2013, 01:19

Hallo, ein Programm soll mit sqlite3 eine Datenbank erstellen bzw., wenn diese bereits erstellt ist, lediglich aktualisieren. Mit welchem Befehl finde ich heraus, ob eine bestimmte Tabelle in einer Datenbank bereits existiert? Oder wie knüpfe ich am einfachsten die Erstellung einer Tabelle an deren Nichtexistenz?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Ganz einfach: so.
Das Leben ist wie ein Tennisball.
Aries
User
Beiträge: 51
Registriert: Mittwoch 21. August 2013, 01:19

EyDu hat geschrieben:Ganz einfach: so.
Was meinst Du?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Dass du für so eine triviale Frage nur die Suchmaschine deiner Wahl anwerfen brauchst und einfach den ersten Treffer verwendest. Oder anders ausgedrückt: bevor du eine, dazu noch so einfach zu beantwortende, Frage stellst, solltest du erstmal versuchen sie selber zu lösen.
Das Leben ist wie ein Tennisball.
BlackJack

Wobei man in diesem Fall auch einfach die Dokumentation zu CREATE TABLE hätte konsultieren können.
Aries
User
Beiträge: 51
Registriert: Mittwoch 21. August 2013, 01:19

EyDu hat geschrieben:Dass du für so eine triviale Frage nur die Suchmaschine deiner Wahl anwerfen brauchst und einfach den ersten Treffer verwendest.
Du schlägst also "SELECT name FROM sqlite_master WHERE type='table' AND name='table_name';" als Lösung vor. Das ist doch sehr unverständlich und erklärungsbedürftig.
EyDu hat geschrieben:Oder anders ausgedrückt: bevor du eine, dazu noch so einfach zu beantwortende, Frage stellst, solltest du erstmal versuchen sie selber zu lösen.
Ich habe versucht es selber zu lösen, und dabei kam eine Fehlermeldung heraus. Ich habe es mit "if not exists" versucht.
BlackJack

@Aries: Das mit dem IF NOT EXISTS wäre aber die normale Lösung für das Problem.

Nach `sqlite_master` kann man in der Dokumentation suchen. Das taucht unter anderem in der Sqlite-FAQ auf in der Antwort der Frage wie man alle Tabellen ermitteln kann, die in einer Datenbank definiert sind.
Aries
User
Beiträge: 51
Registriert: Mittwoch 21. August 2013, 01:19

BlackJack hat geschrieben:@Aries: Das mit dem IF NOT EXISTS wäre aber die normale Lösung für das Problem.
Ok, ich bin dem nochmal nachgegangen und es sieht so aus, als ob der Fehler eine andere Ursache hätte.
Antworten