社区
数据库相关
帖子详情
关于commit的问题
pecker
2003-03-28 05:28:16
应该在什么时机用commi语句呢?
是在每个update,insert或delete语句后面都用呢?
还是只要在application的close事件中用一次呢?
如果我在一条update语句后面没有用commit,那么,紧接着来一句select,会不会取到更新的数据呢?
这么小的问题,真不好意思问出口,没办法,笨啊!
...全文
115
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
Git
commit
与pull的先后顺序
整理这个
问题
的起因: 1.前些天一个晚辈问了我关于
commit
与pull的先后顺序
问题
2.今天又因为
commit
与pull的先后
问题
与同事争论了一番,同事坚持必须要先
commit
才能pull,事实真的是这样么? 我之前给晚辈的答复是: 1.在本地修改与远程代码没有冲突的情况下,优先使用:pull->
commit
->push 2.在有冲突的情况下:
commit
->pull...
git
commit
回退三种姿势
git
commit
回退 作为弄清楚三个点 工作区(working tree): 本地编辑器 暂存区(index):git add操作后进入暂存区,可用git status查看 本地仓库(repository):git
commit
后进入本地仓库 修改
commit
当我们第一次提交后,发现还有修改没有提交,通常我们想的是在add/
commit
一次,这样存在的
问题
呢就是会有一些扰乱我们的
commit
信息。比如我们第二次
commit
提交信息可能是“删除上次提交的debugger” 其实我们两次提交内容
SAP ABAP 详细解析关于
COMMIT
WORK 和
COMMIT
WORK
首先说明一点:更新是异步的,更新是由SAP中UPD1和UPD2两个进程执行的,关于这两个进程各负责什么再说明一下: UPD1先执行,主要是用于数据库表的更新,比如说写表 UPD2后执行,主要是用于一些数据的收集统计等的更新,比如说为BW收集一下数据等等 同时这个是可以在SM13看到的,如果看到日志中UPD1成功,UPD2失败,如有BW的取数,那肯定会丢数据的。 所以说
COMMIT
WORK是异步的,为了使其同步,所有就有了
COMMIT
WORK AND WAIT. 对于
COMMIT
WORK AN
mysql
commit
慢_mysql
commit
引起的性能
问题
概述对于支持事务的关系型数据库来说,事务的完成需要执行
commit
命令,用于保存该事务操作的相关日志、标记该事务已完成,确保数据的一致性。通常情况下,
commit
命令执行很快,但也会存在
commit
是性能瓶颈,影响整体数据库性能的情况发生。案例分析慢日志分析对慢日志分析可见,
commit
操作平均耗时近1分钟是非正常现象。MySQL
commit
机制mysql数据库为了保证binlog、redolo...
关于
Commit
message代码提交
Commit
message代码提交规范 目录相关参考链接 相关参考链接
Commit
message 代码提交规范 Git 提交的正确姿势:
Commit
message 编写指南
commit
message格式规范
Commit
message 和 Change log 编写指南 Git 提交的正确姿势:
Commit
message 编写指南 【Git学了就忘-实操(二)】修改已提交
commit
的message
commit
message:提交说明 ...
数据库相关
754
社区成员
12,762
社区内容
发帖
与我相关
我的任务
数据库相关
PowerBuilder 数据库相关
复制链接
扫一扫
分享
社区描述
PowerBuilder 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章