FOR UPDATE的使用

select ... for update [nowait] 行锁,直到该语句的事务被commit语句或rollback语句结束为止;

select ... for update nowait语句将要更改的数据试探性地加锁,就可以通过立即返回的错误提示而明白其中的原因。

查询ORACLE锁了哪张卡:
SELECT S.SID SESSION_ID, S.USERNAME, DECODE(LMODE, 0, 'None', 1, 'Null', 2, 'Row-S (SS)', 3, 'Row-X (SX)', 4, 'Share', 5, 'S/Row-X (SSX)', 6,

'Exclusive', TO_CHAR(LMODE)) MODE_HELD, DECODE(REQUEST, 0, 'None', 1, 'Null', 2, 'Row-S (SS)', 3, 'Row-X (SX)', 4, 'Share', 5, 'S/Row-X (SSX)', 6,

'Exclusive', TO_CHAR(REQUEST)) MODE_REQUESTED, O.OWNER||'.'||O.OBJECT_NAME||' ('||O.OBJECT_TYPE||')', S.TYPE LOCK_TYPE, L.ID1 LOCK_ID1, L.ID2 LOCK_ID2

FROM V$LOCK L, SYS.DBA_OBJECTS O, V$SESSION S WHERE L.SID = S.SID AND L.ID1 = O.OBJECT_ID;

[@more@]

直接用ROWID替代WHERE CURRENT OF YOUR_CURSOR_NAME语句,
尤其在相对繁习的程序里头。

COMMIT必需存在程序结尾。以防死锁成形。

EXCEPTION里的ROLLBACK是最基本的需要。

例子:

declare
-- query emp.name
cursor cur_emp
is
select a.deptno,
a.dname,
a.rowid,
b.rowid rowid_1
from dept a, emp b
where empno = 7369
and a.deptno = b.deptno
for update nowait;

-- local variables
v_deptno dept.deptno%type;
v_dname dept.dname%type;
v_rowid rowid;
v_rowid_1 rowid;

begin
open cur_emp;
loop
fetch cur_emp into v_deptno, v_dname, v_rowid, v_rowid_1;
exit when cur_emp%notfound;

update dept
set dname = 'abc'
where rowid = v_rowid;

update emp
set ename = 'frank'
where rowid = v_rowid_1;

end loop;
close cur_emp;
commit;
exception
when others then
rollback;
raise;
end;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9896745/viewspace-915487/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9896745/viewspace-915487/

避坑指南:Winbond W25Q256JV QSPI Flash状态寄存器那些坑(含QE位不可改的解决方案) 本文深度解析Winbond W25Q256JV QSPI Flash状态寄存器的常见问题与解决方案,重点解决QE位不可修改、写保护区域异常等典型问题。通过实战代码示例和寄存器配置技巧,帮助开发者高效完成Flash读写测试与性能优化,避免常见设计陷阱。 阅读详情

相关推荐

美团mtgsig 3.1.0算法还原:从加密入口到d1生成的完整链路拆解

本文详细拆解了美团mtgsig 3.1.0签名算法的完整逆向过程。通过定位加密入口函数eH,理清a6、a5、a8到d1的生成依赖链,并运用插桩技术,在JSVMP混淆环境下逐步还原了核心参数的生成逻辑,为逆向工程实践提供了清晰的纯算还原方法论。

oo7890的博客 777

for update 详解及实战

1.for update是什么 ?2. 实际项目中的应用场景 ?3.表锁还是行锁 本文将全面给大家讲解以上问题

qq_39220971的博客 1万+

最短线性递推式求解与有理函数重建

这一算法来自于我们对“线性递推式拟合”的视角转换,其后得到的算法是自然的。 引理 1. 如果两个有理分式 p1/q1,p2/q2p_1/q_1, p_2/q_2p1​/q1​,p2​/q2​ 均有 deg⁡p<n,deg⁡q≤n\deg p<n, \deg q\leq ndegp<n,degq≤n 且展开式 p1/q1≡p2/q2(modx2n)p_1/q_1 \equiv p_2/q_2 \pmod {x^{2n}}p1​/q1​≡p2​/q2​(modx2n),那么 p1/q1=p2/

Entropy Increaser 的博客 2592

for update的使用

一、for update定义 for update是一种行级锁,又叫排它锁,一旦用户对某个行施加了行级加锁,则该用户可以查询也可以更新被加锁的数据行,其它用户只能查询但不能更新被加锁的数据行.如果其它用户想更新该表中的数据行,则也必须对该表施加行级锁.即使多个用户对一个表均使用了共享更新,但也不允许两个事务同时对一个表进行更新,真正对表进行更新时,是以独占方式锁表,一直到提交或复原该事务为止。行锁永远是独占方式锁。 只有当出现如下之一的条件,才会释放共享更新锁: 1、执行提交(COMMIT)语句 2、退出数

felix 3161

避开STM32中断优先级配置的坑:HAL_NVIC_SetPriority()参数你真的用对了吗?

本文深入解析STM32中断优先级配置中的关键问题,重点剖析HAL_NVIC_SetPriority()函数的正确使用方法。通过实际案例揭示优先级分组设置、抢占优先级与子优先级的区别,提供多中断系统中的优化策略和调试技巧,帮助开发者避免常见配置错误,提升系统稳定性。

weixin_42532938的博客 423

微信DAT图片恢复全攻略:从文件路径到批量解密(附最新工具下载)

本文详细介绍了微信DAT图片恢复的全过程,从文件路径定位到批量解密操作,帮助用户高效恢复加密存储的图片。文章涵盖新旧版本微信的存储结构差异,推荐使用专业解密工具进行批量转换,并提供了提升恢复成功率的实用技巧和常见问题解决方案。

weixin_29325007的博客 455

for update

MySQL的存储引擎是InnoDB时 for update有行锁和表锁。 用法: select ... for update 注意点 仅适用于InnoDB,必须在事务块 begin/commit中才有效 当有明确的主键/索引时是行级别的锁,否则是表级别的锁 验证 数据库表如下 id是主键,name有索引,age和createtime无索引 验证1(有明确的主键/索引是是行级别的锁) Terminal 1 执行 begin; select * from bintest.afs_tes

猎户星座 3954

Ubuntu 22.04蓝牙开关秒关?别慌,可能是这个Intel固件文件在搞鬼

本文深入解析Ubuntu 22.04蓝牙开关秒关问题,指出Intel固件文件缺失是常见原因,并提供详细修复方案。通过确认硬件型号、检查固件文件及智能替代方案,帮助用户快速解决蓝牙故障,提升系统稳定性。

weixin_30247307的博客 756

一文理解MySQL的For Update行级锁

For update是MySQL中用于实现行锁的一种语法,其主要作用是在SELECT查询语句中加上FOR UPDATE子句,以保证查询结果集中的每一行都被锁定,避免其他事务对这些行进行修改。在执行For update语句时,MySQL会首先获取表级共享锁,然后再根据WHERE条件锁定符合条件的行。锁定的范围包括了WHERE条件筛选出来的所有行,即使有些行并不满足WHERE条件。

Lion_Long的博客 1万+

什么是无人机巡检?如何实现无人机自动巡检?

复亚智能的无人机自动巡检系统通过高度自动化的技术,实现了无人机的高效巡检作业。无人机自动机场支持无人机的自动起降和电池更换,自动飞行算法确保无人机在复杂环境中的精准飞行和拍摄,而云端识别诊断和AI感知算法平台则实现图像的实时传输和智能分析。复亚智能,作为无人机技术的创新者和推动者,致力于开发先进的无人机自动巡检解决方案,助力各行各业实现智能化、自动化的巡检工作,引领智能巡检的未来。利用人工智能和机器学习算法,无人机可以被训练来识别特定的模式和异常,如结构损坏、热泄漏等,从而提高巡检的准确性和效率。

foiadrone的博客 2844

三菱FX5U-PLC建立CClink的IO通讯

最新需要用三菱的FX5U的PLC搭建一个CClink通讯,PLC做主站,控制CClink从站的IO,下面2个输入模块AJ65SBTB1-32D,两个输出模块AJ65SBTB1-32T。3、在右侧的部件,选择网络模块:FX5-CCL-MS,CC-link主站模块。依次把加入两个AJ65SBTB1-32D,两个AJ65SBTB1-32T。7、基本设置,网络配置设置,链路刷新设置,设置好下面参数,应用。6、基本设置,网络配置设置,CC-Link配置设置。8、部件选择,模块,右键,添加模块标签。

wzz418550729的博客 1001

mysql for update使用

相关连接: mysql lock in share mode使用 for update 既可以锁表又可以锁行,具体怎么做的.直接从网上拿来一个版本: 利用select * for update 可以锁表/锁行。自然锁表的压力远大于锁行。所以我们采用锁行。什么时候锁表呢? 假设有个表单products ,里面有id跟name二个栏位,id是主键。 例1: (明确指定主键,并...

做你想做的人,没有时间的限制,只要愿意,什么时候都可以start。 657

【华为OD技术面试真题 - 技术面】- C++面试题(1)

2024华为OD面试手撕代码真题目录以及八股文真题目录

算法大师! 3398

SELECT FOR UPDATE 是怎么使用的?

是提供的语法,用来在把“查到的行”锁住,防止其他事务同时改或删,实现流程。

winfield821的博客 471

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

mysql for update 使用说明

原文:https://blog.youkuaiyun.com/u013803262/article/details/75195981  笔者在阅读技术书籍的时候无意间发现 一条select语句后面跟了for update,一时间就来了兴趣。  几番搜索之后,明白这是一个上锁用的。  上的是一个排它锁,也就是说,其他的事务是可以读取的。但是不能写入或者更新。  我们举一个项目中常见的应用场景吧。  比如有一张...

liao0801_123的博客 389

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

DECLARE CURSOR 才允许使用 FOR UPDATE 子句

参数核心作用和本次错误的关系用账号密码登录 SQL Server无关,仅为连接认证配置启用服务器端游标,兼容FOR UPDATE语法核心修复项,绕过 SQL Server 的语法校验简单说:你加的参数里,是“解药”,它通过改变 JDBC 驱动处理结果集的方式,兼容了 Seata 生成的FOR UPDATE语句,解决了 SQL Server 的语法错误;而只是常规的身份验证配置,不影响错误修复。

WSSQYHW的博客 854

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

mysql for update of_MySQL for update使用详解

InnoDB行锁类型共享锁(S):允许一个事务去读取一行,阻止其他事务获取相同数据集的排他锁。排他锁(X):允许获得排他锁的事务更新数据,组织其他事务获取相同数据集的共享锁和排他锁。加锁方式共享锁(S):select * from table_name where ... lock in share mode;排他锁(S):select * from table_name where ... fo...

weixin_36317943的博客 288

mysql sql select for update_mysql SELECT FOR UPDATE语句使用示例

以MySQL 的InnoDB 为例,预设的Tansaction isolation level 为REPEATABLE READ,在SELECT 的读取锁定主要分为两种方式:SELECT ... LOCK IN SHARE MODE SELECT ... FOR UPDATE这两种方式在事务(Transaction) 进行当中SELECT 到同一个数据表时,都必须等待其它事务数据被提交(Commi...

weixin_29216353的博客 769

MySQL SELECT FOR UPDATE语句使用示例

本文介绍在mysql中使用mysql SELECT FOR UPDATE 语句时的一些问题与解决办法 以MySQL 的InnoDB 为例,预设的Tansaction isolation level 为REPEATABLE READ,在SELECT 的读取锁定主要分为两种方式: ① SELECT ... LOCK IN SHARE MODE ② SELECT ... FOR UPDATE 这两种方式在事务(Transaction) 进行当中SELECT 到...

西楼的博客 646

Select for update使用详解

前言 近期开发与钱相关的项目,在高并发场景下对数据的准确行有很高的要求,用到了for update,故总结一波以便日后留恋。 for update的使用场景 如果遇到存在高并发并且对于数据的准确性很有要求的场景,是需要了解和使用for update的。 比如涉及到金钱、库存等。一般这些操作都是很长一串并且是开启事务的。如果库存刚开始读的时候是1,而立马另一个进程进行了update将库存更新为0了,而事务还没有结束,会将错的数据一直执行下去,就会有问题。所以需要for upate 进行数据加锁防...

胡歌_的博客 5730

for update在mysql中使用

一问题 需求是异步给 IM 发送link消息,所以有一张消息表,每次查询发送失败的数据,并对这些行数据加锁,(避免别的线程再次查询出来发送消息) select * from message where id > ?1 AND message_status = ?2 and send_times < ?3 order by create_time asc f...

weixin_30736301的博客 87

mysql for update_mysql SELECT FOR UPDATE语句使用示例

以MySQL 的InnoDB 为例,预设的Tansaction isolation level 为REPEATABLE READ,在SELECT 的读取锁定主要分为两种方式:SELECT ... LOCK IN SHARE MODE SELECT ... FOR UPDATE这两种方式在事务(Transaction) 进行当中SELECT 到同一个数据表时,都必须等待其它事务数据被提交(Commi...

weixin_39548832的博客 116

关于 UPDATE 语句 和 SELECT ... FOR UPDATE 的对比分析,包括语法、功能、锁机制、使用场景及示例代码

关于 UPDATE 语句 和 SELECT ... FOR UPDATE 的对比分析,包括语法、功能、锁机制、使用场景及示例代码

爱的叹息的专栏 815

MySQL update For_mysql SELECT FOR UPDATE语句使用示例

以MySQL 的InnoDB 为例,预设的Tansaction isolation level 为REPEATABLE READ,在SELECT 的读取锁定主要分为两种方式:SELECT ... LOCK IN SHARE MODE SELECT ... FOR UPDATE这两种方式在事务(Transaction) 进行当中SELECT 到同一个数据表时,都必须等待其它事务数据被提交(Commi...

weixin_39646706的博客 187

数据库中update怎么用事例_mysql SELECT FOR UPDATE语句使用示例

以MySQL 的InnoDB 为例,预设的Tansaction isolation level 为REPEATABLE READ,在SELECT 的读取锁定主要分为两种方式:SELECT ... LOCK IN SHARE MODE SELECT ... FOR UPDATE这两种方式在事务(Transaction) 进行当中SELECT 到同一个数据表时,都必须等待其它事务数据被提交(Commi...

weixin_39959192的博客 251

MySQL在事务中使用SELECT ... FOR UPDATE

在数据库的操作中,经常发生数据并发更新的情况,这时可以使用SELECT … FOR UPDATE语句对数据加锁保证数据更新的正常执行。 下图所示为一张学生成绩表,现在开启两个终端会话模拟数据的并发操作。(开启终端会话可以使用MySQL Shell,安装和使用方法详见另一篇博文如何使用MySQL Shell连接数据库) 先开启第一个会话,依次执行以下语句将id为3的记录中数学成绩加10: start transaction; select * from test where id = 3 for upda

baodong 2253
上一篇: ORACLE回滚段的概念,用法和规划及问题的解决
下一篇: 什么叫裸设备
cuiting6752
博客等级 码龄11年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值