【发布时间】:2012-07-19 02:26:13
【问题描述】:
以下情况是否需要显式锁定mysql表:
mysql数据库用户名:db_user(而且只有一个)
Web 客户端会话:许多用户同时登录
由于 mysql 用户是单一的,但我与我的 Web 服务器有很多客户端会话。会发生什么(在一个表中插入记录,然后获取插入 ID 并将数据添加到另一个表):
- 许多网络会话都有单独的 db_user 副本。
- 为多个浏览器会话提供一个 db_user 副本。
- 任何其他。
请帮忙。
【问题讨论】:
-
抱歉,我不明白你在问什么。如果您只是选择数据,那么不,您永远不需要锁定表。
-
当使用第一个表中的最后一个插入 ID 插入并随后将数据添加到其他表时。
-
锁表的目的是什么?你想只允许一个用户插入来获取主键吗?如果是这样,您可以使用 InnoDB 引擎和
last_insert_id()函数。这个函数是一个基于会话的函数,所以总是会得到一个唯一的值(在不同的会话中)。 InnoDb 引擎将允许您使用行级锁定而不是表锁定,因此其他连接也将正常工作