最近,我们需要向一些现有的 SQLite 数据库表添加列。这可以用 ALTER TABLE ADD COLUMN
来完成。当然,如果桌子已经被修改过了,我们不想再管它了。不幸的是,SQLite 不支持 ALTER TABLE
上的 IF NOT EXISTS
子句。
我们当前的解决方案是执行 ALTERTABLE 语句并忽略任何“重复列名”错误,就像 这个 Python 示例(但是在 C + + 中)一样。
但是,我们通常设置数据库模式的方法是使用。Sql 脚本包含 CREATE TABLE IF NOT EXISTS
和 CREATE INDEX IF NOT EXISTS
语句,可以使用 sqlite3_exec
或 sqlite3
命令行工具执行这些语句。我们不能将 ALTER TABLE
放在这些脚本文件中,因为如果该语句失败,那么它之后的任何内容都不会被执行。
我希望将表定义放在一个位置,而不是拆分为。Sql 和。Cpp 文件。有没有办法在纯 SQLiteSQL 中编写 ALTER TABLE ADD COLUMN IF NOT EXISTS
的变通方法?