社区
数据库相关
帖子详情
关于commit的问题
pecker
2003-03-28 05:28:16
应该在什么时机用commi语句呢?
是在每个update,insert或delete语句后面都用呢?
还是只要在application的close事件中用一次呢?
如果我在一条update语句后面没有用commit,那么,紧接着来一句select,会不会取到更新的数据呢?
这么小的问题,真不好意思问出口,没办法,笨啊!
...全文
129
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,线上的...
Git关于
commit
的操作,修改message,合并
commit
,撤销
commit
文章目录Git修改已提交
commit
的message信息修改最近一次
commit
的message修改之前
commit
的message合并
commit
合并连续的
commit
合并间隔的
commit
要合并的
commit
是最上级的情况 Git修改已提交
commit
的message信息 修改...
git 几个
commit
点合并成一个
commit
点
1、在做1个功能的时候,你自己觉得代码没
问题
了,就本地
commit
,然后提交代码,在gitlab上发起和并请求,老大看完之后,觉得你还有修改的地方,把你的代码打回来重新修改,改完之后,本地
commit
,推到远程,再次...
Git
commit
与pull的先后顺序
1.前些天一个晚辈问了我关于
commit
与pull的先后顺序
问题
2.今天又因为
commit
与pull的先后
问题
与同事争论了一番,同事坚持必须要先
commit
才能pull,事实真的是这样么? 我之前给晚辈的答复是: 1.在本地修改与远程...
git
commit
命令详解
git
commit
命令用于将工作区内容或暂存区内容提交到版本库本文记录 git
commit
的常见用法,日常开发中,这几个参数足够使用了# 将暂存区内容提交到版本库, 进入 vi 命令界面输入提交信息git
commit
# 将某些已被...
数据库相关
754
社区成员
12,762
社区内容
发帖
与我相关
我的任务
数据库相关
PowerBuilder 数据库相关
复制链接
扫一扫
分享
社区描述
PowerBuilder 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章