社区
数据库相关
帖子详情
关于commit的问题
pecker
2003-03-28 05:28:16
应该在什么时机用commi语句呢?
是在每个update,insert或delete语句后面都用呢?
还是只要在application的close事件中用一次呢?
如果我在一条update语句后面没有用commit,那么,紧接着来一句select,会不会取到更新的数据呢?
这么小的问题,真不好意思问出口,没办法,笨啊!
...全文
135
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
idea的
commit
各类
问题
解析
idea的
commit
各类
问题
解析
mysql
commit
慢_mysql
commit
引起的性能
问题
概述对于支持事务的关系型数据库来说,事务的完成需要执行
commit
命令,用于保存该事务操作的相关日志、标记该事务已完成,确保数据的一致性。通常情况下,
commit
命令执行很快,但也会存在
commit
是性能瓶颈,影响整体数据库性能的情况发生。案例分析慢日志分析对慢日志分析可见,
commit
操作平均耗时近1分钟是非正常现象。MySQL
commit
机制mysql数据库为了保证binlog、redolo...
mysql
commit
阶段_mysql
commit
引起的性能
问题
概述对于支持事务的关系型数据库来说,事务的完成需要执行
commit
命令,用于保存该事务操作的相关日志、标记该事务已完成,确保数据的一致性。通常情况下,
commit
命令执行很快,但也会存在
commit
是性能瓶颈,影响整体数据库性能的情况发生。案例分析慢日志分析对慢日志分析可见,
commit
操作平均耗时近1分钟是非正常现象。MySQL
commit
机制mysql数据库为了保证binlog、redolo...
oracle 频繁
commit
,[转载]有关
COMMIT
太频繁
问题
解决方案
1.
问题
描述在之前测试人员生成的ADDM报告,当导入数据的时候,数据库存在大量的提交和回退事件。查找结果 1: 提交和回退受影响的是 .51 个活动会话, 占总活动的 58.55\%。-------------------------------在执行
COMMIT
和 ROLLBACK 操作时, 等待 "日志文件同步" 事件消耗了大量数据库时间。建议案 1: 应用程序分析估计的收益为 .51 个...
git-
commit
遇到的
问题
git
commit
遇到的
问题
今天在本地仓库时git
commit
时遇到提示说代码提交不规范的
问题
,以此总结记录一下。 以下有两种方法可以解决: ===> 第一种通过删除.git文件中的 pre-
commit
规范校验,再通过 git
commit
就可以了,但是不推荐使用此方法,因为后期可能会出现规则检验的
问题
。好像有人用这个方法还是不行。那可以尝试第二种方法。 ===> 第二种通过在语句添加 --no-verfiy 实现 git
commit
--no-verify -m '
数据库相关
754
社区成员
12,762
社区内容
发帖
与我相关
我的任务
数据库相关
PowerBuilder 数据库相关
复制链接
扫一扫
分享
社区描述
PowerBuilder 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章