gpt4 book ai didi

sqlite.swift - 如何在添加列之前检查列是否存在

转载 作者:行者123 更新时间:2023-12-04 03:58:07 29 4
gpt4 key购买 nike

我有一个数据库,如果它不存在,我想向它添加一列。
我如何使用 sqlite.swift API 做到这一点?

最佳答案

通常,如果您要向现有表添加新列,则需要有一个迁移路径。您可以使用 userVersion用于管理数据库架构版本的属性:

if db.userVersion < 1 {

db.create(table: users) { t in
t.column(id, primaryKey: true)
t.column(email, unique: true)
}

db.userVersion = 1
}

if db.userVersion < 2 {

db.alter(table: users, add: name)
db.alter(table: users, add: age)

db.userVersion = 2
}

您也可以按照 Max 的建议使用 ifNotExists:create(table:…)等级:
 db.create(table: users, ifNotExists: true) { t in
t.column(id, primaryKey: true)
t.column(email, unique: true)
}

但是要添加新列,您必须解析一个笨拙的 PRAGMA 语句:
 let tableInfo = Array(db.prepare("PRAGMA table_info(users)"))
if tableInfo.filter { col in col[1] == "name" } == nil {
db.alter(table: users, add: name)
}
if tableInfo.filter { col in col[1] == "age" } == nil {
db.alter(table: users, add: age)
}

不太可读(或推荐),但如果您正在处理遗留数据库,则可能有必要。

请务必阅读 the ALTER TABLE documentation对于更复杂的改动。

关于sqlite.swift - 如何在添加列之前检查列是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29828075/

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