UPDATE表时怎么加锁

Jofangkm 2009-03-11 04:57:00
我要UPDATE一个表,但UPDATE的时候防止别人读,我该怎么加锁啊
...全文
946 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔儿爷 2009-03-13
  • 打赏
  • 举报
回复
设定事务隔离级别
csdm55 2009-03-13
  • 打赏
  • 举报
回复
学习拉
Cubuntu 2009-03-12
  • 打赏
  • 举报
回复
恩 明白分别了
CIOSOFT 2009-03-12
  • 打赏
  • 举报
回复
学习!
Sqler 2009-03-11
  • 打赏
  • 举报
回复
类似问题,应尽量通过设定事务隔离级别来实现。
尽量避免显式使用hint
ruihuahan 2009-03-11
  • 打赏
  • 举报
回复
系统自动加的锁就够用了吧
dawugui 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Jofangkm 的回复:]
HOLDLOCK和TABLOCKX有何区别啊
[/Quote]
注意: 锁定数据库的一个表的区别

SELECT * FROM table WITH (HOLDLOCK)
其他事务可以读取表,但不能更新删除

SELECT * FROM table WITH (TABLOCKX)
其他事务不能读取表,更新和删除
blacky8 2009-03-11
  • 打赏
  • 举报
回复

HOLDLOCK:将共享锁保留到事务完成,而不是在相应的表、行或数据页不再需要时就立即释放锁
TABLOCKX 使用表的排它锁,该锁可以防止其它事务读取或更新表,并在语句或事务结束前一直持有
Jofangkm 2009-03-11
  • 打赏
  • 举报
回复
HOLDLOCK和TABLOCKX有何区别啊
fuxiaoyang13 2009-03-11
  • 打赏
  • 举报
回复
update tb
set ...
FROM tb WITH (HOLDLOCK)
......................
htl258_Tony 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dawugui 的回复:]
引用 1 楼 dawugui 的回复:
SQL codeupdate tb
set ...
FROM tb WITH (HOLDLOCK)


错了,应该是:


SQL codeupdate tb
set ...
FROM tb WITH (TABLOCKX)
[/Quote]会自动解锁吗?
htl258_Tony 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dawugui 的回复:]
SQL codeupdate tb
set ...
FROM tb WITH (HOLDLOCK)
[/Quote]学习
dawugui 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dawugui 的回复:]
SQL codeupdate tb
set ...
FROM tb WITH (HOLDLOCK)
[/Quote]

错了,应该是:

update tb
set ...
FROM tb WITH (TABLOCKX)
sdhdy 2009-03-11
  • 打赏
  • 举报
回复
友情帮顶!
dawugui 2009-03-11
  • 打赏
  • 举报
回复
update tb
set ...
FROM tb WITH (HOLDLOCK)

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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