我是一名业余程序员,但已经有一段时间了。我正在编写一个用于工作的小型文档管理应用程序(在 c# 中)。当用户打开记录时,我会更新它以指示它当前已锁定以供编辑。
我不确定的是如何确保在应用程序不安全退出(例如计算机意外关闭)时更新数据库?另外,当应用程序通过用户关闭的计算机退出时,我应该如何更新它?我只是想确保我的记录不会在没有人查看时被标记为锁定。
最佳答案
下面是 SQL Server 的通常做法。开发人员颁发的“记录锁”与客户端-服务器架构无关。您将共享文件架构与客户端-服务器架构混淆了。
确保表有时间戳列(由数据库引擎自动更新)。
读入要编辑的行。将行中的时间戳放入变量中。
更新语句如下所示:
update myTable
set col = {some value}
where id = {your id}
AND
timestampcolumn = {the timestamp the row had when you read it in}
如果有人在您读入后更改了该行,它将具有不同的时间戳,并且没有记录会匹配您的 WHERE 子句条件,因此您的更新将失败。然后您可以决定要做什么。
当您使用 SQL-Server(或 Oracle 或任何真正的客户端-服务器架构)时,您可以拔掉客户端 PC 的插头,而不会对服务器产生任何不利影响。
关于c# - 当记录被锁定时,如何安全地退出 DBMS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4184022/