db2怎样实现事务控制

db2怎样实现事务控制,第1张

你是要在 db2 的命令行里面 控制?

还是存储过程里面控制?

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

db2 -td@

connect to sample@

db2 =>list command options@

命令行处理器选项设置

后端进程等待时间(秒)(DB2BQTIME) = 1

连接至后端的重试次数 (DB2BQTRY) = 60

请求队列等待时间(秒)(DB2RQTIME) = 5

输入队列等待时间(秒)(DB2IQTIME) = 5

命令选项 (DB2OPTIONS) =

选项 描述 当前设置

------ ---------------------------------------- ---------------

-a显示 SQLCAOFF

-c自动落实 ON

请注意那个

-c自动落实 ON

英文版本显示为

-cAuto-CommitON

也就是默认情况下, 是自动提交的。

使用下面的命令来查看设置:

执行命令: 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显示 SQLCAOFF

-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 条记录已选择。

(一)如下思路供参考:

1)改第11列的定义 添加默认值

db2 alter table <表名>alter column col11 set default <默认值>

2)执行导入语句

db2 load from <文件名>of <文件类型>insert into <表名>(col1,col2,col3...col10) nonrecoverable

3)如果只需要做一次,之后再修改11列定义,删除默认值

db2 alter table <表名>alter column col11 drop default

(二)如下是测试例子:

C:\cap_log>

C:\cap_log>

C:\cap_log>db2 select * from tab1

A B

----------- -

1 a

2 a

1 a

2 a

1 b

2 b

6 record(s) selected.

C:\cap_log>db2 alter table tab1 alter column b set default 'W'

DB20000I The SQL command completed successfully.

C:\cap_log>more 1.del

1

2

C:\cap_log>db2 load from 1.del of del insert into tab1(a) nonrecoverable

SQL3109N The utility is beginning to load data from file "C:\cap_log\1.del".

SQL3500W The utility is beginning the "LOAD" phase at time "2014-10-01

11:45:28.077839".

SQL3519W Begin Load Consistency Point. Input record count = "0".

SQL3520W Load Consistency Point was successful.

SQL3110N The utility has completed processing. "2" rows were read from the

input file.

SQL3519W Begin Load Consistency Point. Input record count = "2".

SQL3520W Load Consistency Point was successful.

SQL3515W The utility has finished the "LOAD" phase at time "2014-10-01

11:45:28.153020".

Number of rows read = 2

Number of rows skipped = 0

Number of rows loaded = 2

Number of rows rejected = 0

Number of rows deleted = 0

Number of rows committed= 2

C:\cap_log>db2 select * from tab1

A B

----------- -

1 a

2 a

1 a

2 a

1 b

2 b

1 W

2 W

8 record(s) selected.

C:\cap_log>db2 alter table tab1 alter column b drop default

DB20000I The SQL command completed successfully.

C:\cap_log>


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11855276.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存