我正在使用Stephen Celis iOS lib来处理SQLite3数据库,here is the github link。
以git为例:
try db.transaction {
let rowid = try db.run(users.insert(email <- "betty@icloud.com"))
try db.run(users.insert(email <- "cathy@icloud.com", managerId <- rowid))
}
// BEGIN DEFERRED TRANSACTION
// INSERT INTO "users" ("email") VALUES ('betty@icloud.com')
// INSERT INTO "users" ("email", "manager_id") VALUES ('cathy@icloud.com', 2)
// COMMIT TRANSACTION
我尝试实现commitHook块,但是每次插入都会触发它。我只想在发送所有请求时触发一个动作:-D
我该怎么办?
干杯
编辑: 这是我实现提交钩子的方法。
for bay in list{
try! self.themanager.db.transaction {
try! self.themanager.db.run(self.themanager.bays.insert(
//insert values
))
self.themanager.db.commitHook({
print("end commit hook")
})
}
}
也许它与我的主循环相关:/
答案 0 :(得分:0)
目前,SQLite仅支持FOR EACH ROW触发器,不支持FOR EACH STATEMENT触发器。因此,显式指定FOR EACH ROW是可选的。 FOR EACH ROW表示可以对引起触发器触发的语句插入,更新或删除的每个数据库行执行触发器中指定的SQL语句(取决于WHEN子句)。
Commit钩子像触发器一样工作。不幸的是,尚不支持“ FOR EACH STATEMENT”行为。