Swift GRDB 自增主键:使用 `encode(to:)` 方法自动绑定主键
Swift GRDB 自增主键:使用 encode(to:) 方法自动绑定主键
在 Swift GRDB 中,您可以通过定义一个自增的主键来实现自增功能。本文将介绍如何在使用 encode(to:) 方法写入数据时,自动绑定自增主键,无需手动设置。
1. 定义主键列
在定义表结构时,使用 ColumnDefinition 的 primaryKey() 方法定义一个主键列。例如:
struct Person: Codable, FetchableRecord, PersistableRecord {
var id: Int64?
var name: String
var age: Int
static let databaseTableName = "persons"
static let id = ColumnDefinition.id
static var databaseColumns: [String] {
return [id.name, "name", "age"]
}
static func setupTable(_ db: Database) throws {
try db.create(table: databaseTableName) { t in
t.column(id).primaryKey()
t.column("name", .text).notNull()
t.column("age", .integer).notNull()
}
}
}
2. 使用 encode(to:) 方法自动绑定主键
在使用 encode(to:) 方法写入数据时,您不需要手动绑定主键列。GRDB 会根据定义的主键自动识别主键列,并在写入数据时自动完成主键的自增。例如:
let person = Person(name: "Alice", age: 25)
try dbQueue.write { db in
try person.encode(to: db)
}
在上述代码中,person 的 id 属性值为 nil,表示该对象还未在数据库中保存过。调用 encode(to:) 方法时,GRDB 会自动识别 Person 表的主键列 id,并在写入数据时自动完成主键的自增,将自增后的主键值赋给 person 的 id 属性。
总结
通过定义主键列并使用 primaryKey() 方法,您可以在 Swift GRDB 中轻松实现自增主键功能。使用 encode(to:) 方法写入数据时,GRDB 会自动识别主键并进行自增操作,简化了数据库操作流程。
原文地址: https://www.cveoy.top/t/topic/oR9e 著作权归作者所有。请勿转载和采集!