Swift GRDB 4.14.0: 删除所有相同 cid 的数据 - 示例代码
在 Swift GRDB 中,你可以使用 filter 和 delete 方法来删除所有 cid 相同的数据。下面是一个示例代码:
import GRDB
// 创建数据库连接
let dbQueue = try DatabaseQueue(path: "path_to_database")
// 定义数据模型结构
struct MyTable: TableRecord {
static let tableName = "myTable"
var cid: Int
var col1: String
var col2: Int
}
// 删除所有cid相同的数据
try dbQueue.write { db in
try db.inTransaction {
let cids = try MyTable
.select(Column("cid"))
.distinct()
.fetchAll(db)
for cid in cids {
try MyTable
.filter(Column("cid") == cid.cid)
.deleteAll(db)
}
return .commit
}
}
在上面的代码中,我们首先创建了一个数据库连接 dbQueue,然后定义了一个名为 MyTable 的数据模型结构,该结构对应了数据库中的表格。接下来,在 dbQueue.write 代码块中,我们使用 inTransaction 方法来开启一个事务,以确保数据的一致性。
在事务中,我们首先查询出所有不重复的 cid 值,并使用 fetchAll 方法将其存储在 cids 数组中。然后,我们遍历 cids 数组,使用 filter 方法过滤出所有 cid 等于当前遍历的 cid 的数据,并使用 deleteAll 方法将其删除。
最后,我们使用 .commit 来提交事务,以确保删除操作生效。
请注意,上述代码中的表名、列名和数据模型结构都需要根据你的实际数据库结构进行修改。
原文地址: https://www.cveoy.top/t/topic/pnvo 著作权归作者所有。请勿转载和采集!