progress的数据库访问--事务

progress的数据库访问--事务

关键字:progress 4GL 数据库 事务 transaction database

什么是事务,我想就不用再多说了.这里只说一下在progress里事务在什么地方开始,什么地方结束.
首先要说的是,在progress种,一个当前会话同时最多只能拥有一个事务.当然可以在一个事务结束之后启动另外一个新的事务.

progress怎样知道一个事务是从什么地方开始,并且在什么地方结束呢? 这都是由事务块儿定义的.
如果当前会话没有事务,则以下语句块儿开始一个事务:
1.任何使用了关键字transaction的语句块儿,do,for each或者repeat
2.一个直接改变了数据库值的语句块儿,或者在读书数据库的时候使用了exclusive-lock锁.这样的语句块儿包括过程块儿,事件块儿,以及do on error,for each,repeat的每一次迭代.

直接改变数据库的值意味着该语句块儿至少包含一句代码可以改变数据库内容. 比如create,delete,update语句.
如果find或者for each语句指定了exclusive-lock,并且至少有一个不是嵌入在别的事物内部,则该语句块儿会使用exclusive-lock来读取数据.

要注意的是do语句块并不会自动的拥有事务属性,不过你可以显示的使用transaction属性.

小提示:有一个函数transaction可以返回当前所在处是否有一个活动的事务.注意该函数调用不需要括号.

下面的代码给出了演示:

/*trans-test.p*/

MESSAGE "the procedure block" skip transaction
    VIEW-AS ALERT-BOX INFO BUTTONS OK.
repeat :
    MESSAGE "
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值