社区
数据库相关
帖子详情
关于commit的问题
pecker
2003-03-28 05:28:16
应该在什么时机用commi语句呢?
是在每个update,insert或delete语句后面都用呢?
还是只要在application的close事件中用一次呢?
如果我在一条update语句后面没有用commit,那么,紧接着来一句select,会不会取到更新的数据呢?
这么小的问题,真不好意思问出口,没办法,笨啊!
...全文
82
8
打赏
收藏
关于commit的问题
应该在什么时机用commi语句呢? 是在每个update,insert或delete语句后面都用呢? 还是只要在application的close事件中用一次呢? 如果我在一条update语句后面没有用commit,那么,紧接着来一句select,会不会取到更新的数据呢? 这么小的问题,真不好意思问出口,没办法,笨啊!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
oyh
2003-03-31
打赏
举报
回复
ROLLBACK(回滚)语句放弃自上一个COMMIT、ROLLBACK或CONNECT语句以来的所有数据库操作,关闭所有的游标和过程,并开始一个新的事务。
aaa 应该是200
pecker
2003-03-31
打赏
举报
回复
接着问:
我还是对于commit和rollback不太清楚
如果我用了一条update,把字段aaa(假设为 数字型) 改成100
假设改写成功,用了一条commit,这时,数据库中aaa的值为100
第二次这样操作,把aaa改成200.
当第三次试图把aaa改成300.
这时候出错了。那么根据判断用了一条rollback
这个时候,再读取aaa应该是什么值呢?
先假定sqlca.autocommit=false
我设想的语句是这样的:
1: update tablename
set aaa=100 ;
2: if ....then //假设这里执行的是commit
commit;
else
rollback;
endif
3: update tablename
set aaa=200;
4: if ..... then //假设这里执行的是commit
commit;
else
rollback;
endif
5: update tablename
set aaa=300;
6: if .... then //假设这时候执行的是rollback
commit ;
else
rollback;
按照上面的假设条件:减缩成:
update tablename set aaa=100;
commit;
update tablename set aaa=200;
commit;
update tablename set aaa=300;
rollback;
这最后一个rollback,back到哪里呢?
按照我的理解,既然最后一个update没有执行,那应该rollback的是第二句update.那么aaa应该是100.
这样不是跟程序设计的初衷有误差吗?
我不明白。
shahand
2003-03-28
打赏
举报
回复
//应该在什么时机用commi语句呢?
//是在每个update,insert或delete语句后面都用呢?
//还是只要在application的close事件中用一次呢?
:尽量早,在update,insert,delete之后
//如果我在一条update语句后面没有用commit,那么,紧接着来一句select,
//会不会取到更新的数据呢?
能够
及时提交(commit)是一个很好的习惯
th820901
2003-03-28
打赏
举报
回复
在缺省情况下,当应用程序运行disconnect 时,系统会自动运行一条commit语句,这对我们来说并不是总是有利的,有时我们在运行discnnect时希望由程序本身决定是提交还是回滚。
若我们在事务对像中的commitondisconnt的dbpram的参数设置为'yes'后,运行disconnect时系统就会自动运行一条commit语句,完成事务提交:若设置为no,刚自动完成一条rollback语句回滚事务
McdullMini
2003-03-28
打赏
举报
回复
最好还是在每个操作
比如一个button的click中
有多条修改数据库的语句
那么最好在所有的操作都结束以后再commit
不需要每条update或insert语句都commit
butter527
2003-03-28
打赏
举报
回复
andyzq说的很好
如果sqlca.autocommit = false就要在每次操作数据库时写commit。
而sqlca.autocommit默认是false,一般情况下都是要写的,但写以前最
好验证一下sqlcode的值.
yehe999
2003-03-28
打赏
举报
回复
integer rtn
CONNECT USING SQLCA;
dw_employee.SetTransObject(SQLCA)
rtn = dw_employee.Update()
IF rtn = 1 AND SQLCA.SQLNRows > 0 THEN
COMMIT USING SQLCA;
ELSE
ROLLBACK USING SQLCA;
END IF
andyzq
2003-03-28
打赏
举报
回复
如果设置了SQLCA.AutoCommit = true,那么就不需要写commit了,没有设置的话还是写commit
好的习惯还是写commit
Oracle数据库 大事务的数据更改对数据库内部的影响
本课程以Oracle 10g数据库为基础,来讲解大事务的数据更改在数据库内部是如何处理的。 当用户执行一条SQL对数据库进行更改操作的时候... 本课程就以实验的方式得出数据,来验证以上所提出的
问题
。
Git关于
commit
的操作,修改message,合并
commit
,撤销
commit
文章目录Git修改已提交
commit
的message信息修改最近一次
commit
的message修改之前
commit
的message合并
commit
合并连续的
commit
合并间隔的
commit
要合并的
commit
是最上级的情况 Git修改已提交
commit
的message信息 修改最近一次
commit
的message 执行 git
commit
--amend 进入编辑模式,这个
commit
是所...
SAP ABAP 详细解析关于
COMMIT
WORK 和
COMMIT
WORK
SAP ABAP 详细解析关于
COMMIT
WORK 和
COMMIT
WORK
Git
commit
与pull的先后顺序
整理这个
问题
的起因: 1.前些天一个晚辈问了我关于
commit
与pull的先后顺序
问题
2.今天又因为
commit
与pull的先后
问题
与同事争论了一番,同事坚持必须要先
commit
才能pull,事实真的是这样么? 我之前给晚辈的答复是: 1.在本地修改与远程代码没有冲突的情况下,优先使用:pull->
commit
->push 2.在有冲突的情况下:
commit
->pull...
【git】Idea使用 Undo
Commit
,Revert
Commit
,Drop
Commit
区别
一、Undo
Commit
适用情况:代码修改完了,已经
Commit
了,但是还未push,然后发现还有地方需要修改,但是又不想增加一个新的
Commit
记录。这时可以进行Undo
Commit
,修改后再重新
Commit
。 如果已经进行了Push,线上的
Commit
记录还是会存在的 简单来说,就是撤销了你
Commit
的这个动作。详细解释下: 1、首先,对项目进行了代码修改,然后进行
commit
操作。 2、确认
Commit
之后(未进行push) 3、进行Undo
Commit
操作 执行后和未
Commit
之.
数据库相关
752
社区成员
12,763
社区内容
发帖
与我相关
我的任务
数据库相关
PowerBuilder 数据库相关
复制链接
扫一扫
分享
社区描述
PowerBuilder 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章