社区
数据库相关
帖子详情
关于commit的问题
pecker
2003-03-28 05:28:16
应该在什么时机用commi语句呢?
是在每个update,insert或delete语句后面都用呢?
还是只要在application的close事件中用一次呢?
如果我在一条update语句后面没有用commit,那么,紧接着来一句select,会不会取到更新的数据呢?
这么小的问题,真不好意思问出口,没办法,笨啊!
...全文
112
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】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
之.
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
是所...
git 几个
commit
点合并成一个
commit
点
在用git做版本控制器的时候,经常会遇到以下情况: 1、在做1个功能的时候,你自己觉得代码没
问题
了,就本地
commit
,然后提交代码,在gitlab上发起和并请求,老大看完之后,觉得你还有修改的地方,把你的代码打回来重新修改,改完之后,本地
commit
,推到远程,再次发起合并。到此功能做完,但是做完之后发现,你的一个功能
commit
了两次,当然根据实际情况有些时候你为了做一个功能,来...
git
commit
后,如何进行撤销
commit
操作
git
commit
后,如何进行撤销
commit
操作
mysql
commit
慢_mysql
commit
引起的性能
问题
概述对于支持事务的关系型数据库来说,事务的完成需要执行
commit
命令,用于保存该事务操作的相关日志、标记该事务已完成,确保数据的一致性。通常情况下,
commit
命令执行很快,但也会存在
commit
是性能瓶颈,影响整体数据库性能的情况发生。案例分析慢日志分析对慢日志分析可见,
commit
操作平均耗时近1分钟是非正常现象。MySQL
commit
机制mysql数据库为了保证binlog、redolo...
数据库相关
754
社区成员
12,762
社区内容
发帖
与我相关
我的任务
数据库相关
PowerBuilder 数据库相关
复制链接
扫一扫
分享
社区描述
PowerBuilder 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章