DB2のSQL Serverトランザクションと同等のものは何ですか?
-
03-07-2019 - |
質問
DB2の次のSQL Serverステートメントと同等のものは何ですか?
- 取引開始
- トランザクションのコミット
- ロールバックトランザクション
解決
例については、こちらをご覧ください。しかし、基本的に
BEGIN TRANSACTION
COMMIT TRANSACTION
ROLLBACK
他のヒント
実際の答えは、ここで示したものよりも少し複雑です。確かに、トランザクションはANSI標準化されており、DB2はそれらをサポートする可能性があります。
DB2 for z / OSは、他のバリアント(LUW、Linux-Unix-Windows、最も一般的)とは非常に異なる可能性があります。暴言に陥るリスクがあるため、DB2について話すという考えはほとんど無意味です。 IBMのデータベースの特定のバリアントについて話していますが、あるデータベースで機能するものは別のデータベースでは完全に無効になる可能性があります。 BEGIN TRANSACTION
の回答が受け入れられたため、OPが使用していたフレーバーはz / OSのものではないと想定します。
DB2 z / OSでトランザクションを使用しようとしてこの問題に遭遇した人のために、要約を次に示します。メインフレームのDB2には明示的なトランザクションがありません。 BEGIN TRANSACTION
や他の同等の構造はありません。トランザクションは暗黙的に開始され(通常、ドキュメントでは作業単位と呼ばれます)、コミットまたは明示的にロールバックされます(通常、Toadなどの多くのGUIツールには、ときどき忍び寄る自動コミット機能があります)。
9.1 z / OS SQLリファレンスマニュアル(28ページ。 http: //www-01.ibm.com/support/docview.wss?uid=swg27011656#manuals ):
"作業プロセスは、申請プロセスが開始されると開始されます。作業単位 また、前の作業単位が次のもの以外によって終了した場合にも開始されます。 アプリケーションプロセスの終了。作業単位は、コミット操作によって終了します。 完全なロールバック操作、またはアプリケーションプロセスの終了。コミットまたはロールバック 操作は、終了する作業単位内で行われたデータベースの変更のみに影響します。
スクリプトを記述するときに得られる最も近いものは、手動でセーブポイントを指定することです。
これらは次のようになります。
SAVEPOINT A ON ROLLBACK RETAIN CURSORS;
UPDATE MYTABLE SET MYCOL = 'VAL' WHERE 1;
ROLLBACK WORK TO SAVEPOINT A;
表面的には、これらは明示的なトランザクションに似ていますが、そうではありません。代わりに、それらは実際には単一の暗黙的なトランザクション内の単なる時点です。多くの目的で十分な場合がありますが、概念的な違いに注意することが重要です。