sql 如何加表的排他锁

kongokong 2009-10-11 04:48:37
因为是多客户端操作的,所以希望在更新的时候,可以把表用排他锁锁住,其他用户不可以查询和修改

之前看到相关问题里面提到 WITH (XLOCK) ,我这里可以用这个吗?

WITH (XLOCK) 用完之后要不要手动释放的?

最后说下,不要事务的
...全文
297 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
windsolz 2009-10-19
  • 打赏
  • 举报
回复
受教了;另外,楼主问的排他锁的解锁问题,有帮忙阐述一下的么?
kongokong 2009-10-11
  • 打赏
  • 举报
回复
谢谢大侠们!~~~~
dawugui 2009-10-11
  • 打赏
  • 举报
回复
1 如何锁一个表的某一行

A 连接中执行

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ

begin tran

select * from tablename with (rowlock) where id=3

waitfor delay '00:00:05'

commit tran

B连接中如果执行

update tablename set colname='10' where id=3 --则要等待5秒

update tablename set colname='10' where id<>3 --可立即执行

2 锁定数据库的一个表

SELECT * FROM table WITH (HOLDLOCK)


注意: 锁定数据库的一个表的区别

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

SELECT * FROM table WITH (TABLOCKX)
其他事务不能读取表,更新和删除
navy887 2009-10-11
  • 打赏
  • 举报
回复
TABLOCKX---该锁可以防止其它事务读取或更新表,并在语句或事务结束前一直持有。
navy887 2009-10-11
  • 打赏
  • 举报
回复
update tb
set ...
FROM tb WITH (TABLOCKX)

34,576

社区成员

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

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