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?

Antworten auf die Frage(12)

Ihre Antwort auf die Frage