还是存储过程里面控制?
如果是命令行里面控制, 需要做如下的 *** 作:
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>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)