一个对表加锁的操作问题

nobodyelse 2006-05-21 10:09:30
在一个先程中,如果开始已经对几个表进行了加锁,在解锁之前再次对另一个表加所,这样会有问题吗.比如:
begin
lock tables a write,b write,c write
lock tables d write
unlock tables
end

我在程序中发现当执行完lock tables d write后,再操作表c,会报错,说c没有被加锁.这里是不是还有个作用域的问题.
...全文
139 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mschen 2006-09-09
  • 打赏
  • 举报
回复
在调用lock tables的时候会释放以前加的所有的锁.所以在上边lock tables d write会释放前边a,b,c的缩,当然会出错.所以最好是在一个语句里边对所要操作的所有表进行加锁.

mysql>lock tables a write,b write,c write,d write;
孙亖 2006-09-09
  • 打赏
  • 举报
回复
这是在一个会话里面,如果此时,其他人也做同样的操作?
nobodyelse 2006-05-22
  • 打赏
  • 举报
回复
事实证明这是可以的.哈哈哈哈.
nobodyelse 2006-05-21
  • 打赏
  • 举报
回复
不知道能不能这样.在锁d表的同时,在锁一次a b c表呢.
begin
lock tables a write,b write,c write
lock tables a write,b write,c write,d write
unlock tables
end

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧