db2怎样实现事务控制

 我来答
匿名用户
2013-01-15
展开全部
你是要在 db2 的命令行里面 控制?

还是存储过程里面控制?

如果是命令行里面控制, 需要做如下的操作:

db2 -td@
connect to sample@

db2 => list command options@
命令行处理器选项设置
后端进程等待时间(秒) (DB2BQTIME) = 1
连接至后端的重试次数 (DB2BQTRY) = 60
请求队列等待时间(秒) (DB2RQTIME) = 5
输入队列等待时间(秒) (DB2IQTIME) = 5
命令选项 (DB2OPTIONS) =

选项 描述 当前设置
------ ---------------------------------------- ---------------
-a 显示 SQLCA OFF
-c 自动落实 ON

请注意那个
-c 自动落实 ON
英文版本显示为
-c Auto-Commit ON

也就是默认情况下, 是自动提交的。
使用下面的命令来查看设置:
执行命令: update command options using c off@

db2 => update command options using c off@
DB20000I UPDATE COMMAND OPTIONS 命令成功完成。

再次执行:list command options 查询
db2 => list command options@
命令行处理器选项设置
后端进程等待时间(秒) (DB2BQTIME) = 1
连接至后端的重试次数 (DB2BQTRY) = 60
请求队列等待时间(秒) (DB2RQTIME) = 5
输入队列等待时间(秒) (DB2IQTIME) = 5
命令选项 (DB2OPTIONS) =

选项 描述 当前设置
------ ---------------------------------------- ---------------
-a 显示 SQLCA OFF
-c 自动落实 OFF
...

自动落实(Auto-Commit) 已经被设置为 OFF 了。

这样操作以后, 你就可以在 db2 命令行中, 做 COMMIT 与 ROLLBACK 的处理了。

如果你是要在存储过程里面, 实现事务的话
那么参考下面的例子:

db2 => select * from test_main@
ID VALUE
----------- ----------
1 ONE
2 TWO

2 条记录已选择。

BEGIN
-- 定义 异常处理.
P1: BEGIN ATOMIC
-- 定义错误处理
-- 如果发生错误,结束处理,并回滚前面做的处理。
DECLARE UNDO HANDLER
FOR
SQLEXCEPTION
BEGIN
-- 异常处理

END;
-- 插入2条同样的数据,使主键重复,引发错误后回滚事务.
INSERT INTO test_main(id, value) VALUES (4, 'FOUR');
INSERT INTO test_main(id, value) VALUES (4, 'FOUR');
END P1;
END
@

执行完毕后
db2 => select * from test_main@
ID VALUE
----------- ----------
1 ONE
2 TWO

2 条记录已选择。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
斯文又飒爽丶板栗B
2013-01-14 · TA获得超过162个赞
知道小有建树答主
回答量:153
采纳率:0%
帮助的人:96.8万
展开全部
不知道,但数据库基本都差不多的。但我觉得事务控制不应该交给数据库来处理,而应该在业务逻辑处理。
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式