mysql - 如何锁定 MySQL 中的一行?

标签 mysql database locking innodb row

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

最佳答案

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

关于mysql - 如何锁定 MySQL 中的一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5858467/

相关文章:

php - 使用 php 将 MySql 查询滚动到下一列。

mysql - 更新 MySql 数据库中同一张表的字段

php - 需要从 mysql 帮助编译数组

database - 如何处理可选列

ruby-on-rails - 什么时候在 Rails 中释放悲观锁?

java - 具有重写方法的可重入锁?

php - mysql 查询根据 3 个高级条件提取结果并在 php 中回显

mysql - 在mysql中更新价格

php - Laravel-将Guzzle JSON响应保存到数据库

java - 当没有抛出异常时尝试-finally加锁