今天看前辈写的代码,select语句中最后面加了for update,一时半会不知道什么意思。到网上查了下资料才明白
SELECT ~ FOR UPDATE
ORACLE数据库相关程序测试时,为修改数据或者测试排他错误时常常用到SELECT ~ FOR UPDATE .
SELECT ~ FOR UPDATE 是行锁定SQL语句.执行后符合条件的行被锁定,可防止其它用户修改或删除
这些行,但是表并不是被锁定状态,其它用户对表进行数据插入操作都不受影响.
执行SELECT ~ FOR UPDATE时如果出现冲突刚会陷入等待状态,为防止无休止等待可设置时间
或NOWAIT, 如SELECT * FROM TABLE FOR UPDATE 10 (等待10秒)
SELECT * FROM TABLE FOR UPDATE NOWAIT (不等待);
另据有关资料:在程序代码中使用SELECT ~ FOR UPDATE 后,可能由于条件分支的不同而最终没
有更新被锁定的数据行,此时使用COMMIT而不是ROLLBACK来解除锁定比较好,因为ROLLBACK有引起混乱
的可能性....-_-!
每天前进一小步,哈哈
分享到:
相关推荐
### 数据库Oracle锁:FOR UPDATE OF与FOR UPDATE的区别 在Oracle数据库中,为了确保数据的一致性和准确性,尤其是在多用户环境中进行并发操作时,锁机制是必不可少的一部分。本文将详细介绍`FOR UPDATE`与`FOR ...
标题和描述均聚焦于Oracle数据库中`FOR UPDATE`与`FOR UPDATE NOWAIT`两种锁定机制的区别,这在并发控制和事务处理中具有重要的意义。在深入解析这两种指令之前,我们先来简要回顾一下锁定机制的基本概念。 在...
API For update open ECO
本文将详细介绍如何关闭MyEclipse中的“checking for update”自动更新功能。 #### 一、了解MyEclipse的自动更新机制 MyEclipse是一款基于Eclipse平台的增强版IDE,它集成了许多高级特性,如代码编辑、调试、部署...
forupdate 例子: ModelMember::find()->where([ModelMember::TABLE_USER.'.card'=>$card])->andWhere(['!=',ModelMember::TABLE_USER.'.status', MemberDataDao::ATTR_STATUS_DELETE])->forUpdate()->one();
FOR UPDATE`语句时遇到的死锁情况,并通过具体的例子深入分析了死锁的原因。 `SELECT ... FOR UPDATE`语句用于在事务中锁定查询到的行,以确保在事务结束之前其他事务无法修改这些行。在InnoDB存储引擎中,行级锁...
sim7600固件升级流程以及常见问题解答 博客:SIM7600模块固件升级(模块自身升级),链接:https://blog.csdn.net/zsj2016o/article/details/107102723
### MySQL中“You can’t specify target table for update in FROM clause”错误解决方法 在MySQL数据库管理过程中,遇到SQL语法错误是家常便饭,其中一种较为常见的错误是“You can’t specify target table for ...
MySQL中的`SELECT FOR UPDATE`语句是在事务处理中用于实现数据锁定的一种机制,它主要用于解决多用户并发操作时的数据一致性问题。在InnoDB存储引擎下,MySQL默认的事务隔离级别是`REPEATABLE READ`,这允许事务在...
"for update"是一个数据库操作语句,主要用于解决并发环境下的线程安全问题。在多用户同时访问数据库的应用中,为了防止多个事务同时修改同一数据导致的冲突,"for update"提供了一种行级锁定机制。这在面试中是一个...
FOR UPDATE`语句就是一种行级锁的用法,用于在更新数据前锁定选定的行,防止其他事务在此期间对这些行进行修改。当在查询条件中明确指定了主键,并且查询能够匹配到具体行时,InnoDB会实施行锁。例如: ```sql ...
Delphi RAD Studio XE2 update2 crack XE2 for update2 破解文件
如果不使用事务和`FOR UPDATE`,可能存在如下风险:在`SELECT`之后到`UPDATE`之前,其他事务可能已经将库存减少到0,但我们的事务仍然错误地更新了数量。为了解决这个问题,可以使用如下事务: 1. `SET AUTOCOMMIT=...
我用for update锁表修改数据,结果一直在执行,原来别人锁表了,导致我无法修改数据,用它能查出锁类型和谁锁的
在MySQL数据库中,"You can’t specify target table for update in FROM clause"是一个常见的错误提示,意味着在同一个SQL语句中,你不能直接在一个`UPDATE`或`DELETE`语句的`FROM`子句中引用你想要更新或删除的表...
这个压缩包文件“SIM7080_SIM7500_SIM7600_SIM7900_SIM8200 QDL V1.61 Only for Update”包含了多款SIM模块的固件升级工具,适用于5G通信,意味着它涵盖了Simcom的多代产品,支持从4G向5G的平滑过渡,确保设备能够跟...
在MySQL中,错误1093 - "You can't specify target table for update in FROM clause" 是一个常见的问题,它发生在尝试在`UPDATE`语句的`FROM`子句中直接引用要更新的同一张表时。这个错误表示MySQL不支持在`UPDATE`...
在MySQL数据库中,错误代码1093 - "You can’t specify target table ‘t’ for update in FROM clause" 是一个常见的错误,它通常发生在尝试在一个`UPDATE`语句的`FROM`子句中直接引用要更新的目标表时。...
sqlalchemy 对于行级锁有两种实现方式,with_lockmode(self, mode): 和 with_for_update(self, read=False, nowait=False, of=None),前者在sqlalchemy 0.9.0 被废弃,用后者代替。所以我们使用with_for_update ! 看...