我正在实施一个针对DB2数据库(V9.5)的SQL脚本,以添加列并重新组织数据。我希望能够从Linux命令行执行该脚本:
$ db2 -vstf migration.sql
在 migration.sql
中的所有语句都应该包含在一个事务中,如果有一个语句失败,则必须回滚所有先前的更改。我该怎么做?我尝试使用 START TRANSACTION
,但 DB2 在这种情况下返回语法错误。
migration.sql
connect to ...
-- not accepted by DB2
START TRANSACTION;
update ... set ...
alter table ...
COMMIT;
connect reset;
terminate;
此外,我尝试按照这里所述关闭自动提交:
db2 +c -vstf migration.sql
(在脚本中打开连接时不起作用)- 将
update command options using c off
添加到migration.sql中(发生错误时不回滚任何内容)