Swift GRDB: 如何绑定主键并实现自动增量
在Swift GRDB中,使用'encode(to:)'方法可以将对象编码为行数据,但无法直接绑定主键并实现自动增量。为了实现这个功能,需要使用GRDB的'DatabaseQueue'和'DatabaseWriter'。
首先,在数据模型中定义主键并将其设置为自动增量:
class Person: Codable, FetchableRecord, MutablePersistableRecord {
var id: Int64?
var name: String
enum CodingKeys: String, CodingKey {
case id
case name
}
init(id: Int64? = nil, name: String) {
self.id = id
self.name = name
}
static let databaseTableName = "persons"
static let id = Column("id")
static let name = Column("name")
// 定义主键
static let primaryKey = id
// 设置主键为自动增量
static let id = Column("id").autoincremented()
}
然后,在创建表时,使用'.autoincrementedPrimaryKey()'方法来设置主键为自动增量:
try db.create(table: "persons") { t in
t.autoincrementedPrimaryKey("id")
t.column("name", .text).notNull()
}
最后,在使用'encode(to:)'方法时,使用'DatabaseQueue'或'DatabaseWriter'的'inDatabase'方法来执行操作并绑定主键:
let person = Person(name: "John Doe")
try databaseQueue.inDatabase { db in
try db.write { db in
try person.encode(to: db)
}
}
这样,就可以将对象编码为行数据,并绑定主键并实现自动增量。
原文地址: https://www.cveoy.top/t/topic/oR9U 著作权归作者所有。请勿转载和采集!