问题标签 [record-locking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
192 浏览

sql-server - 在更新期间锁定项目的最佳方式

我正在创建一个网站(c#/SQL Server 2008,.net),该网站需要允许更新用户可以共享的一些常见信息。

例如,我有 2 个用户和一个包含许多项目的表。很像一个审核队列。

假设它包含 ID 为 #1、#2、#3 的行

如果用户 1 首先选择 #1,则需要立即锁定,直到它被释放/可用。

我有几个问题,因为这对我来说是未知的领域。

  • 在 SQL 中锁定这一行的最佳方法是什么?
  • 作为无状态的,如何让用户 2 知道用户 1 声称 #1?使用“下一个可用”方法会更好吗?

提前致谢。

0 投票
1 回答
712 浏览

ms-access-2007 - 表单打开时更改表中的记录 - 记录锁定

我有一个多用户数据库的设计: 1. 表单 A 用于更新表 A 和表 B(同时单击) 2. 表单 B 用于审查表 B,批准记录,然后从表 B 中删除它们

问题是如果在记录上打开表格 B(使用主键 CASENUMBER),并且在表格 A 中编辑该 CASENUMBER 的记录。

如何锁定特定记录,以便在以某种形式查看它时无法在另一个形式中查看/编辑?

0 投票
3 回答
126 浏览

c# - 是否可以锁定记录并仍然允许其他用户阅读?

这可能是一个非常愚蠢的问题,但正如俗话所说,“唯一愚蠢的问题是你不问的问题”......

我有一个 SQL Server 2008 数据库,我想锁定一条记录以进行编辑。但是,另一个用户可能希望同时查看该记录中的信息。所以,我希望第一个进入的人能够锁定记录,因为他们是唯一可以编辑它的人。但是,我仍然希望其他用户可以查看数据。

这一切都是从 C# 前端完成的,因为它将在我们的 Intranet 上。

0 投票
1 回答
3578 浏览

excel - Excel VBA 连接到 MS Access(读/写)到多用户表/查询

我已经试图弄清楚为什么我无法从 Excel(Office 2013)获取多用户读取和更新到 MS Access 表的正确设置。所以我希望这里有人可以提供帮助。

背景 - 我有一个 MS Access 数据库,其中包含在每个用户计算机上运行的 Excel 应用程序使用的表中的所有数据。.accdb 文件位于共享的 QNAP NAS 上。我设计了系统,因此有一个用户列表,可以在启动时通过表单访问,允许用户“登录”到系统。当用户登录时,目的是在此表中记录一个是/否字段,以防止在两台不同的机器上使用相同的用户名访问相同的数据子集。现在这一切都适用于一台机器或一台机器上的多个 excel 实例。当我在多台机器上加载 excel 应用程序时,机器之间的 Yes/No 字段不一致,除非我在机器上停止 Excel 应用程序并重新启动。有时我在这个多用户设置中遇到访问错误或数据库损坏错误 - 所以我显然做错了什么 - 但无法弄清楚。请帮忙!!

来自 excel 应用程序的连接完成如下:

记录集在 excel 中打开如下(除非我在他们“登录”后启动应用程序,否则不会显示用户设置为通过是/否字段登录到另一台机器上)

此用户登录的测试是:

那么我做错了什么?我尝试了所有不同的方法,但差别不大。(注意——我不是试图通过同时登录同一个用户来测试竞争条件——这种情况并不重要——这只是我正在实施的一个简单的锁定模型)。我认为我正在做的是保持记录级别锁定,确保我可以看到任何其他用户对每台机器上每个应用程序中记录的更改。我难住了!打开 MS Access 并查看数据库显示不一致 - 在一台机器上用户已登录,而在另一台机器上用户未登录。我在想它如何连接到访问数据库或访问数据库中的一些我没有正确的设置 - 但这只是一个想法。

最后一个转折点——我的测试环境机器是在 VMware Fusion 虚拟机中运行 Win 8.1/Office 2013 的 Apple MacBook。我目前没有在本机 Win 8.1 机器上测试的环境,但这将是最终目标。也许它可以在目标环境上工作,但还不能测试,因为这是最后一步,解决测试环境中代码的任何问题是我目前的首要任务。

拉斯

0 投票
3 回答
373 浏览

record-locking - 记录锁定在 Archer GRC

当我尝试在 Archer GRC 中编辑记录时,它说另一个用户已打开它,但该用户告诉我他们不再在他们的会话中打开该记录。我该怎么办?

0 投票
2 回答
272 浏览

c# - 并发用户使用 c# 读取并更新到 mysql

我的程序有问题,通过解决这个问题,也许可以通过使用单例方法来完成。但是,我从一些文章中读到,他们说,这不是实现它的好方法,因为 asp.net 应用程序并发用户可能有很多。

我的问题是,系统运行号是基于数据库示例中的特定记录:

  • document_type="INV",document_year=2015,document_month=04,document_running=0102。
  • document_type="INV",document_year=2015,document_month=05,document_running=0002。

因此,当用户新建一条记录时,获取新流水号的逻辑如下:

  1. 获取文档类型 = "inv" ,当年当月,
  2. 如果没有找到。新建单据类型,年月记录,流水号为0001。
  3. 如果找到。跑步+1。

现在,问题出来了。我的情况是 5 个用户在按下“保存”按钮创建新记录时收到了记录信息: - document_type="INV" , document_year=2015 , document_month=05, document_running=0002。

并且 5 个用户获得相同的运行号 INV15-05-0003(在 0002 + 1 之后)。正确的应该是INV15-05-0003、INV15-05-0004、INV15-05-0005、INV15-05-0006和INV15-05-0007。

如果所有用户都收到错误/过时的信息,我们应该如何避免。希望你们都能理解我蹩脚的英语。问候, MH

0 投票
1 回答
3760 浏览

php - Laravel 5 记录编辑签入/签出功能(锁定)

我正在使用 Laravel 5.1 并尝试在用户打开记​​录编辑视图时实现记录锁定,以便任何其他用户在释放锁定之前无法打开同一记录的编辑视图。

很明显,用户永远不会完成编辑,所以我需要能够自动解锁记录(当用户进行任何其他事务时,或者在超时事件之后,或者使用 ajax 后台保持活动调用时)。

我已经查看lockForUpdate()并阅读了有关 InnoDB 锁定功能的信息,但我无法获得有关它的真实信息(搜索了 20 多个帖子,它们似乎都在没有真实信息的情况下相互引用)。文档也没有提供太多信息,探索 Laravel 查询类代码让我取得了以下进展:

  1. 头痛。
  2. 我意识到它仅在查询生成器中可用(我需要它用于 Eloquent)。
  3. 似乎它只是跨国锁定而不是签入/签出记录锁定。

似乎术语和mysql(innodb)锁定的实际作用都存在很大的混淆,或者可能只是我试图弄清楚这一点。

长话短说,InnodDB/Laravel 锁定的主要警告(根据我的需要)是它不是持久的,因此当 php 脚本终止并且用户仍在编辑表单时它会自行重置。它仅用于交易。

我需要实现上述功能(编辑签入/签出),在重新发明轮子之前,我很想知道是否已经有内置的 Laravel/PHP 功能。

如果不是,我正在考虑以下方法,并希望获得关于哪种方法最好的输入。

A. 创建一个edit_checkins带有 record_id、user_id、timestamp 的表。

B.locked_at向记录表添加一列,该列将包含时间戳或空值(类似于deleted_at列)。

我主要关心的是性能和“垃圾收集”,因为有时记录被锁定但从未主动解锁。edit_checkins通过这种方法,人工智能可以在一个简单的查询中从表中删除所有用户锁。但是,检查记录是否被锁定时会慢一些,因为我必须进行表连接(我认为它应该可以忽略不计,因为编辑事件比其他事件少)。使用方法 B 可以更快地检查,但我没有获得所有信息(例如 user_id),并且在不知道 user_id 的情况下实现解锁所有事件几乎是不可能的(我可能需要在记录中添加一locked_by列)。

我希望我把问题说得够清楚了。感谢您的时间。

0 投票
1 回答
244 浏览

sql-server - 记录锁定无法正常工作

我在前端使用 access 2013,在后端使用 sql server 2014。我有一个访问表单,其中记录锁定设置为“已编辑记录”,并且在选项->客户端设置->默认记录锁定下,我已选中“已编辑记录”。

当一个用户正在编辑数据时,我希望记录锁定在表单上。问题是当另一个用户在同一条记录上时,它不会在第二个用户的表单左上角显示锁定指示器。
所以第二个用户认为记录没有被锁定并开始编辑,当他们移动到下一个记录时,他们得到写冲突错误,另一个用户正在编辑数据以复制到剪贴板或删除更改,现在用户知道它是正在编辑并丢弃更改,如果第二个用户能够看到表单左上角的锁定指示器,则可以避免浪费时间。

所以我的问题是为什么没有为第二个用户显示锁定指示器,或者有没有办法弹出一个消息框,让第二个用户知道记录正在被另一个用户编辑。

0 投票
1 回答
365 浏览

ms-access - MS-Access 用户不能访问链接的文本文件

我有一个分布在多个用户之间的小型 Access 数据库。他们不在我的网络上,所以我们使用一个小型 Access 数据库来设置他们,该数据库链接到我们发送给他们的 txt 文件,因此他们能够运行预设查询/报告(这只是我们主数据库报告的副本)。

问题是,如果两个用户尝试运行报告(只有一个源表 - 链接的文本文件),那么其中一个用户会被锁定。我们检查了文件夹,每个人都具有对该文件夹的读/写访问权限(但我们只是在读取文本文件,所以他们是否具有写访问权限是否重要?)。

有谁知道为什么会这样?Access 是否会自动将指向外部文本文件的链接设为独占?

0 投票
2 回答
658 浏览

vba - 带有 VBA 的 MS Access Lock 链接表

我对数据库设计比较陌生,但我有 4-6 年的编程经验(主要是 Java)。我能够设计一个已经运行良好的数据库,即使在网络上也是如此。它分为后端和前端,每个用户都有一份 FE。我使用 DMax 来设置订阅者的 ID,因为每个订阅者都需要一个唯一的、连续的 ID。

我唯一的问题是,当用户同时添加订阅者时,它只会保存最后一次添加。有没有办法在一个用户添加信息(使用 VBA)时锁定链接表?

如果可能,其他用户能否验证该表是否已锁定?

谢谢!

编辑:

这是生成数字的代码。它还检查连续中是否有空格(例如,如果有 5、6、8,它会变成 7)。

在按下按钮之前,不会以任何方式保存记录。在我保存记录之前,这个数字生成发生了 5 条指令。