ALTER TABLE ADD COLUMN WENN NICHT EXISTIERT in SQLite
Wir mussten kürzlich Spalten zu einigen unserer vorhandenen SQLite-Datenbanktabellen hinzufügen. Dies kann mit @ gemacht werdALTER TABLE ADD COLUMN
. Wenn die Tabelle bereits geändert wurde, möchten wir sie natürlich in Ruhe lassen. Leider unterstützt SQLite keinIF NOT EXISTS
Klausel aufALTER TABLE
.
Unsere derzeitige Problemumgehung besteht darin, die Anweisung ALTER TABLE auszuführen und alle "doppelten Spaltennamen" -Fehler zu ignorieren, genau wie beidieses Python-Beispiel (aber in C ++).
Unser üblicher Ansatz zum Einrichten von Datenbankschemata ist jedoch ein .sql-Skript mitCREATE TABLE IF NOT EXISTS
undCREATE INDEX IF NOT EXISTS
-Anweisungen, die mit @ ausgeführt werden könnsqlite3_exec
oder dersqlite3
Kommandozeilen-Tool. Wir können nicht @ setzALTER TABLE
in diesen Skriptdateien, denn wenn diese Anweisung fehlschlägt, wird nichts danach ausgeführt.
Ich möchte die Tabellendefinitionen an einem Ort haben und nicht zwischen .sql- und .cpp-Dateien aufteilen. Gibt es eine Möglichkeit, eine Problemumgehung für @ zu schreibeALTER TABLE ADD COLUMN IF NOT EXISTS
in reinem SQLite SQL?