Oracle For update研究

 

For update

1 select * from hjh for update [of hjh.a]; 锁定表的所有行

可以select,insert,不可以update,Delete  Commit提交后,解除锁定

2 SELECT * FROM hjh WHERE a = 1 FOR UPDATE [of hjh.a]; 只锁定a=1的行

3 SELECT a.a, t1.d FROM hjh a, t1 WHERE a.a = t1.c [and a.a = 2] FOR UPDATE; 锁定两个表的中满足条件的行

4 SELECT a.a, t1.d FROM   hjh a,t1 WHERE a.a = t1.c [and a.a = 2] FOR UPDATE OF a.a; 只锁定hjh中满足条件的行

行级共享锁,然后以独占方式进行修改数据(update,delete)

FOR UPDATE 的时候 ,其他人不能更改你查询出来的记录

commitrollback都可以释放锁

 

DML锁包括table-level locks(TM)Row-level locks(TX)

说明row-level lock(TX type)是为了确保其它用户不可以在相同的时间修改相同的行

TM 是对象锁,表示可能在这个对象上做了什么操作,还没有结束,所以不允许ddl

TX 是事务锁,表示发起了一个事务,发起事务的判别标准

posted @   zping  阅读(4919)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示