请教ADOQuery是否可以锁表?

Jim@luckeeinc.com 2009-12-01 04:55:30
请问各位ADOQuery在用的时候是否可以锁定某张表让别人不能操作?
比如写如下代码
ADOQuery->Connection = ....;
ADOQuery->SQL->Clear();
ADOQuery->SQL->Add(lock tables test read); //这里锁test表
ADOQuery->ExecSQL();

ADOQuery->SQL->Clear();
ADOQuery->SQL->Add("insert into test values(....)"); //这里同一个ADOQuery再对这张表做insert
ADOQuery->ExecSQL();

这样写是不是有问题?怎么好像连自己也锁了,提示说insert失败?

代码是用妖哥网站上下的链接MySql的 TMyQuery来做的 应该和ADOQuery是一个道理, 怎么跑出来的结果锁表把自己也锁了?

请帮忙看一下
...全文
140 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
aking888 2009-12-23
  • 打赏
  • 举报
回复
dddddddddddd
Jim@luckeeinc.com 2009-12-02
  • 打赏
  • 举报
回复
問題解決 結了
周药师 2009-12-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 ring_pt 的回复:]
请问各位ADOQuery在用的时候是否可以锁定某张表让别人不能操作?
比如写如下代码
ADOQuery->Connection = ....;
ADOQuery->SQL->Clear();
ADOQuery->SQL->Add(lock tables test read);    //这里锁test表
ADOQuery->ExecSQL();

ADOQuery->SQL->Clear();
ADOQuery->SQL->Add("insert into test values(....)");    //这里同一个ADOQuery再对这张表做insert
ADOQuery->ExecSQL();

这样写是不是有问题?怎么好像连自己也锁了,提示说insert失败?

代码是用妖哥网站上下的链接MySql的 TMyQuery来做的 应该和ADOQuery是一个道理, 怎么跑出来的结果锁表把自己也锁了?

请帮忙看一下
[/Quote]
你是把这个表全部都锁了

使用事务与锁
可以加锁 和解锁
http://hi.csdn.net/link.php?url=http://blog.csdn.net%2Fzjcxc%2Farchive%2F2009%2F07%2F27%2F4383113.aspx
EagleFew 2009-12-02
  • 打赏
  • 举报
回复
你获取的是一个read 锁, 这个锁的作用使得任意一个线程对该表只能进行读取操作.

你想只有一个线程写应该获取一个write锁

lock table test write

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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