質問
JDBCコネクタはロールバックをサポートしていると認識しているのですが、Amazon RedshiftのJDBCコネクタにてcopy・truncate・insertコマンドを組み合わせた処理を作成してトランザクション内でエラーを発生させたところ、ロールバックされませんでした。
ロールバックされなかった理由、および対処法を教えてください。
回答
Amazon Redshift JDBC ドライバーのJDBCコネクタにおけるTRUNCATEコマンドですが、コマンドが実行されたトランザクションはコミットされる仕様となっております。
そのため、TRUNCATEコマンドを含むトランザクション内でエラーが発生した場合、ロールバック処理が行われない場合がございます。
つきましては、TRUNCATEコマンドをDELETEコマンドに変更していただき、ロールバック処理が正常に行われるかお試しください。
TRUNCATEコマンドの詳細につきましては、以下のAWS公式ページをご確認ください。
◇【AWS公式】Amazon Redshift -TRUNCATE
https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_TRUNCATE.html
TRUNCATE コマンドはコマンドが実行されたトランザクションをコミットします。そのため、TRUNCATE 操作をロールバックすることはできず、それ自体がコミットを行うと TRUNCATE コマンドが他の操作にコミットする場合があります。
コメント
0件のコメント
記事コメントは受け付けていません。