社区
Oracle
帖子详情
关于select for update
ibicanfly
2003-08-20 05:31:14
各位老大
SQL文中的select for update一般用于什么场合阿?
...全文
313
5
打赏
收藏
关于select for update
各位老大 SQL文中的select for update一般用于什么场合阿?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wangqiu
2003-08-21
打赏
举报
回复
帮你顶!特别关注!!!
ibicanfly
2003-08-21
打赏
举报
回复
下面是按我自己的理解对它的分析,大家看看有没有道理:
--情况1:当一个事务处理里面,处理比较复杂(光靠update 自己不能保证数据的新鲜性)时,必须先用for update 把表中的一些纪录给锁住
--情况2:当一个事务处理里面,要对A,B两个有关联的表进行更新时,很明显不用select for update的话,无法保证保证数据的新鲜性
以上是我的理解,但我还有一个疑问:
当我们要对一个表A中的一个字段更新时,只用UPDATE语句本身就可以LOCK住自己想要更新的数据,这个时候我们如果先用select for update把对应纪录给LOCK住,有这个必要吗?
多谢!
tiangou
2003-08-21
打赏
举报
回复
我有这样的一个经验:计费时,减少余额,先将以前的金额取出来,用到了for update,以保证数据在同一时间的唯一性
minkoming
2003-08-20
打赏
举报
回复
好像是当前用来锁住表的一些数据,防止其他程序对数据的修改。
rrxxpp
2003-08-20
打赏
举报
回复
给记录上锁
select
for
update
和
select
for
update
wait和
select
for
update
nowait的区别
select
for
update
和
select
for
update
wait和
select
for
update
nowait的区别 CREATE TABLE "TEST6" ( "ID" VARCHAR2(30), "NAME" VARCHAR2(30), "AGE" NUMBER(2,0), "SEX" VARCHAR2(2
Oracle
select
for
update
用法
当数据正在被另一个进程修改的时候,使用
select
得到的结果就不是最新的,这就需要使用for
update
,当oracle发现满足条件的记录正在被更新时,不会立即执行
select
语句,而是一直等待下去,直到更新结束才会执行
select
语句。发现无法查询出结果,并且会话一直处于等待状态,这是因为会话2里的语句锁住了C1='ZZH'的行,此时会话会一直处于等待状态。不等待行锁释放,提示锁冲突,不返回查询结果。FOR
UPDATE
适合可以等待其他事务释放锁定的场景,这样可以逐一处理数据行,确保数据的一致性。
SELECT
FOR
UPDATE
案例分析
但是这时用户操作另一个网上银行客户端,转账1元,如果最终两笔操作都成功了,用户的账号余款是9999人民币,第一次转的9000人民币并没有得到更新,但是在转账的另一个账号却会收到这9000元,这导致的结果就是钱变多,而账不平。具体的,可以使用一个带有注释的。因此,丢失更新是程序员最容易犯的错误,也是最不易发现的一个错误,因为这种现象只是随机的、零星出现的,不过其可能造成的后果却十分严重。丢失更新是另一个锁导致的问题,简单来说其就是一个事务的更新操作会被另一个事务的更新操作所覆盖,从而导致数据的不一致。
【Oracle笔记】
select
for
update
的用法及实例解析
一、它有什么作用:
select
for
update
是为了在查询时,避免其他用户以该表进行插入,修改或删除等操作,造成表的不一致性。 二、举几个例子:
select
* from t for
update
会等待行锁释放之后,返回查询结果。
select
* from t for
update
nowait 不等待行锁释放,提示锁冲突,不返回结果
select
* from t fo
Oracle
17,134
社区成员
55,258
社区内容
发帖
与我相关
我的任务
Oracle
Oracle开发相关技术讨论
复制链接
扫一扫
分享
社区描述
Oracle开发相关技术讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章