gpt4 book ai didi

sqlite - 如果 SQLite 中不存在,则更改表添加列

转载 作者:IT王子 更新时间:2023-10-29 06:16:54 24 4
gpt4 key购买 nike

我们最近需要向一些现有的 SQLite 数据库表中添加列。这可以通过 ALTER TABLE ADD COLUMN 来完成.当然,如果表已经被修改过,我们不想管它。不幸的是,SQLite 不支持 ALTER TABLE 上的 IF NOT EXISTS 子句。

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

但是,我们设置数据库模式的常用方法是使用包含 CREATE TABLE IF NOT EXISTSCREATE INDEX IF NOT EXISTS 语句的 .sql 脚本,这可以使用 sqlite3_execsqlite3 命令行工具执行。我们不能将 ALTER TABLE 放在这些脚本文件中,因为如果该语句失败,则不会执行它之后的任何内容。

我想将表定义放在一个地方,而不是在 .sql 和 .cpp 文件之间拆分。有没有一种方法可以在纯 SQLite SQL 中为 ALTER TABLE ADD COLUMN IF NOT EXISTS 编写解决方法?

最佳答案

我有一个 99% 的纯 SQL 方法。这个想法是对您的模式进行版本控制。您可以通过两种方式执行此操作:

  • 使用 'user_version' pragma 命令 ( PRAGMA user_version ) 为您的数据库架构版本存储增量编号。

  • 将您的版本号存储在您自己定义的表中。

这样,当软件启动时,它可以检查数据库架构,如果需要,运行您的 ALTER TABLE 查询,然后递增存储的版本。这比“盲目”尝试各种更新要好得多,尤其是当您的数据库多年来增长和更改几次时。

关于sqlite - 如果 SQLite 中不存在,则更改表添加列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3604310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com