2013-04-24 62 views
1

如果一个用户读取/写入特定的表格行。在MySQL(Inno Db)中锁定和解锁表格行

同时,如果其他用户来读取/写入该特定行。那么他将无法做到这一过程。

第一个用户释放该行后,只有第二个用户可以访问该行。

我该如何在mysql中实现它?

我可以用锁&解锁表,但它会明确地锁定整个表

是否有任何其他的解决方案,使该行明智的锁定是可能的吗?

+0

集MySQL的引擎'innodb' MySQL服务器

更多内进行。它提供行级锁定。 – 2013-04-24 07:04:58

+0

@YogeshSuthar感谢您的评论。所以你说,如果我们使用innodb,那么行级锁定是在内部发生的,我们不需要执行任何操作? – 2013-04-24 07:08:48

+0

是............. – 2013-04-24 07:10:07

回答

1

MySQL MyISAM支持table-level locking。更改为InnoDB引擎row-level locking

锁定类型由数据库本身隐含。您无需执行任何操作即可强制进行行级锁定或表级锁定。

MySQL使用InnoDB表,以支持多个会话同时 写访问的行级锁,使其适用于 多用户,高并发,和OLTP应用程序。对于MyISAM,MEMORY和MERGE表,MySQL使用 表级锁,因此只允许 一次更新这些表,使它们更适合于只读,主要读取或单用户应用程序。

这就是所谓的Internal Locking其中锁定约how to lock a row for read

+0

感谢您的评论。目前我使用inno Db。 所以你说,如果我们使用innodb,那么行级锁定是内部发生的,我们不需要执行任何操作? – 2013-04-24 07:09:52

+0

是的,你不需要实现任何东西! – Vimalnath 2013-04-24 07:14:11

+0

好吧,我的情况是,当一个用户读取一行时,其他用户无法读取该记录。它是否可以自动进行innodb? 我在读写行或删除记录过程中发生行级锁定 – 2013-04-24 08:08:07