gpt4 book ai didi

c# - 获取最后插入的 ID

转载 作者:行者123 更新时间:2023-11-30 14:02:15 24 4
gpt4 key购买 nike

我目前正在使用下面的方法来获取最后插入的行的 ID。

    Database.ExecuteNonQuery(query, parameters);

//if another client/connection inserts a record at this time,
//could the line below return the incorrect row ID?
int fileid = Convert.ToInt32(Database.Scalar("SELECT last_insert_rowid()"));
return fileid;

到目前为止,这种方法运行良好,但我不确定它是否完全可靠。

假设有两个客户端应用程序,每个都有自己独立的数据库连接,它们同时调用上面的服务器端方法。请记住,客户端线程并行运行并且 SQLite 一次只能运行一个操作(或者我听说过),一个客户端实例是否有可能返回插入的记录的行 ID另一个实例?

最后,有没有更好的方法来获取最后插入的行 ID?

最佳答案

If another client/connection inserts a record at this time, could the line below return the incorrect row ID?

不,因为写入要么发生在读取之后,要么发生在读取之前,但不会发生在读取期间。

Keeping in mind that the client threads run in parallel and that SQLite can only run one operation at a time, would it be possible for one client to get the row ID of the record that was inserted by the other client?

当然可以。

同时调用服务器端方法并不重要。数据库的锁定允许并发读取,但不允许并发写入或边写边读。

如果您还没有,请阅读 SQLite's file locking model .

关于c# - 获取最后插入的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6353343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com