SQLite Transactions and LastInsertRowID



我将SQLite数据库与System.Data.SQLite实现一起用于.NET.

我将循环中的记录插入到多个表中(示例中有两个表)。我首先启动一个事务,然后在表1中插入一条记录。然后,我取connection.LastInsertRowID并将一条记录和这个值(作为外键)一起插入表2中。

我对我的所有记录都这样做,然后提交事务。

为什么这会起作用?它会阻碍性能吗?如果由于交易尚未提交而没有真正输入记录,如何知道LastInsertRowID值?是否每次都需要从前面的步骤中猜测该值,从而降低性能?

在您自己的数据库连接中,您在事务中所做的所有更改都是可见的。(只有当你撤销交易时,它们才会消失。)

您所做的更改实际上已写入页面缓存中的表中。如果页面缓存溢出,则会将更改写入数据库文件(但要备份旧数据,以便可以回滚事务)。有关详细信息,请参阅SQLite中的原子提交。

最新更新