如何在MySQL里面实现互斥的访问?如何保证select/update的原子操作?使用lock tables和unlock tables的效果如何? SELECT GET_LOCK(LockName, 5);//5代表超时时间进行操作;SELECT RELEASE_LOCK(LockName); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是的,虽然GET_LOCK并不直接锁定一个表或者记录,但很多情况下可以模拟锁定指定的记录例如:要select/update时,一般需要一个关键字段的值,假设为 "white",此时就给LockName取名为改字段的值SELECT GET_LOCK('white', 5);SELECT * FROM tbl_name WHERE name='white';或者UPDATE tbl_name SET col1='new value' WHERE name='white';其它处理SELECT RELEASE_LOCK('white');此时其它用户(也可以理解为连接mysql的其它线程)要访问name='white'的记录做相同或不同的操作时,也按上述步骤即可实现模拟锁定的效果,当这些用户再次SELECT GET_LOCK('white', 5)时,会表现为阻塞状态,直到第一个GET_LOCK的用户释放或者超时(5秒) mysql中修改字段值某几位 表的联合问题,很慢,怎么优化 mysql存储过程 字符连接 EMS SQL MANAGER录入数据的问题 MYSQL导入数据到数据表中部分字段 多连接数据库操作问题。 mysql中怎么实现这样的想法? 怎样把aaa.sql这个文件导入mysql数据库中(很急) Order by 以字段序号来排序,单不知道字段名 MySQL怎么还原上一次SQL操作带来的影响 PHPn层方案挑战J2EE,.net 有兴趣的朋友来看看.. 招聘JSP+Postgresql程序员,上海吉彦信息技术有限公司
要select/update时,一般需要一个关键字段的值,假设为 "white",此时就给LockName取名为改字段的值
SELECT GET_LOCK('white', 5);SELECT * FROM tbl_name WHERE name='white';
或者
UPDATE tbl_name SET col1='new value' WHERE name='white';其它处理SELECT RELEASE_LOCK('white');此时其它用户(也可以理解为连接mysql的其它线程)要访问name='white'的记录做相同或不同的操作时,也按上述步骤即可实现模拟锁定的效果,当这些用户再次SELECT GET_LOCK('white', 5)时,会表现为阻塞状态,直到第一个GET_LOCK的用户释放或者超时(5秒)