找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 261|回复: 0

SQL Server 排它锁 行锁

[复制链接]

300

主题

35

回帖

1582

积分

管理员

积分
1582
发表于 2025-4-6 19:35:29 | 显示全部楼层 |阅读模式

集_连接池.开始事务 ()

局_SQL = “select *  FROM ORDERS  WITH (XLOCK, ROWLOCK) where order_id='123'”
局_记录集.导入 (集_连接池.取记录集 (局_SQL, , ))
输出调试文本 (删首尾空 (局_记录集.读记录 (“order_id”).取文本 ()))
集_连接池.保存事务 ()
局_记录集.关闭 ()

本行效果:当A查询123订单时,其它人无法查询和修改,并且是行极的,查其它订单则不影响.



1. XLOCK(排他锁)
全称:Exclusive Lock
作用:获取排他锁,阻止其他任何事务读取或修改被锁定的数据
特点:
最严格的锁类型
持有锁的事务可以读写数据
其他事务不能获取任何类型的锁(包括共享锁)

2. ROWLOCK(行级锁)
作用:指定锁的粒度在行级别
特点:
只锁定查询涉及的行,而不是整个页或表
减少锁争用,提高并发性
需要配合索引使用才能生效
组合效果 WITH (XLOCK, ROWLOCK)
当这两个提示一起使用时,表示:

锁定方式:在行级别(而非页或表级别)获取排他锁
并发控制:
当前事务可以读写该行
其他事务:
不能读取(阻塞 SELECT)
不能修改(阻塞 INSERT/UPDATE/DELETE)
范围限定:只锁定查询实际访问的行,不影响表中其他行

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|久要宝盒 ( 皖ICP备18021237号 )

GMT+8, 2025-5-5 20:03 , Processed in 0.078488 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表