加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ALTER TABLE ADD COLUMN如果在SQLite中不存在

发布时间:2020-12-12 19:18:30 所属栏目:百科 来源:网络整理
导读:我们最近需要向一些现有的SQLite数据库表添加列。这可以用 ALTER TABLE ADD COLUMN 完成。当然,如果表已经被改变,我们想要离开它。不幸的是,SQLite不支持ALTER TABLE上的IF NOT EXISTS子句。 我们当前的解决方法是执行ALTER TABLE语句并忽略任何“重复列
我们最近需要向一些现有的SQLite数据库表添加列。这可以用 ALTER TABLE ADD COLUMN完成。当然,如果表已经被改变,我们想要离开它。不幸的是,SQLite不支持ALTER TABLE上的IF NOT EXISTS子句。

我们当前的解决方法是执行ALTER TABLE语句并忽略任何“重复列名”错误,就像this Python example(但在C中)。

但是,设置数据库模式的常用方法是使用一个包含CREATE TABLE IF NOT EXISTS和CREATE INDEX IF NOT EXISTS语句的.sql脚本,这些语句可以使用sqlite3_exec或sqlite3命令行工具执行。我们不能把ALTER TABLE放在这些脚本文件中,因为如果该语句失败,它之后的任何东西都不会被执行。

我想要在一个地方的表定义,而不是在.sql和.cpp文件之间拆分。有没有办法写一个解决方法ALTER TABLE ADD COLUMN如果不存在纯SQLite SQL?

我有一个99%纯SQL方法。想法是版本您的模式。你可以通过两种方式做到这一点:

>使用’user_version’pragma命令(PRAGMA user_version)存储数据库模式版本的增量编号。
>将您的版本号存储在您自己定义的表中。

这样,当软件启动时,它可以检查数据库模式,如果需要,运行您的ALTER TABLE查询,然后增加存储的版本。这是远远好于尝试各种更新“盲”,特别是如果你的数据库增长和多年来改变了几次。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读