【发布时间】:2014-11-21 13:42:49
【问题描述】:
我将 SQLite 数据库与用于 .NET 的 System.Data.Sqlite 实现结合使用。
我在一个循环中将记录插入到多个表中(以两个表为例)。我首先启动一个事务,然后在表 1 中插入一条记录。然后我将 connection.LastInsertRowID 和该值(作为外键)一起插入一条记录到表 2 中。
我为所有记录执行此操作,然后提交事务。
为什么这样做会影响性能?如果由于尚未提交事务而尚未真正输入记录,如何知道LastInsertRowID 的值?是否每次都需要从前面的步骤中猜测值,从而降低性能?
【问题讨论】:
-
现在无法验证,但我怀疑如果事务回滚,它会选择下一个数字并删除该数字(即在序列中留下一个洞)。
-
这很糟糕吗?如果在插入之前在同一事务中删除记录怎么办?
标签: sql database sqlite transactions system.data.sqlite