如何锁定 MySQL 中的一行?

发布于 2024-11-04 05:48:52 字数 288 浏览 1 评论 0原文

我正在开发一款 CRM 桌面应用程序,该应用程序一次将由多个代理使用,并且所有代理都将浏览相同的客户列表。我在这里需要做的是避免代理之间的冲突,因此一旦代理从列表中选择了客户,其他人就不应该再看到该行,或者换句话说,他们不应该能够选择该客户排直到第一个代理完成!想到的最简单的方法可能听起来很愚蠢,那就是添加两个字段 LOCK(BIT)、LOCK_EXPIRY(DATETIME) 并对其进行管理。我不知道,但我认为应该有另一种方法来锁定特定会话的行。我在 Google 上搜索,发现了两种 InnoDB 锁定方法,但我不确定这些方法在这种情况下是否可以帮助我。

I'm working on a CRM desktop application which is going to be used by more than one agent at a time, and all agents will go through the same list of customers. What I need to do here is to avoid conflicts between agents, so once an agent selects a customer from the list, others shouldn't be able to see that row anymore, or in another words they shouldn't be able to select that customer row until the first agent is done ! The simplest way that comes in mind wich may sound stupid is to add two fields LOCK(BIT), LOCK_EXPIRY(DATETIME) and manage that. I don't know But I think there should be another way to lock a row for particular session. I searched on Google and I found two InnoDB locking methods but I'm not sure if those can help me here in this case.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

恬淡成诗 2024-11-11 05:48:57

我建议您添加您描述的两个字段,除了将 LOCK(BIT) 替换为 LOCKED_BY(AGENT_ID) 之外。否则,如果锁定客户列表的代理刷新他/她的页面,则锁定的行可能会消失,直到锁定过期。

I suggest you add the two fields you described, except replace LOCK(BIT) with LOCKED_BY(AGENT_ID). Otherwise if the agent that has locked the list of customers refreshes his/her page, the locked rows may disappear until the lock expires.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文