3つの一般的なデータベース・トランザクションの詳細3つ:トランザクション実行モード

2325 ワード

三、取引の運行モード
通常、トランザクションは次の3つのモードで実行されます.
1.トランザクションの自動コミット
各SQL文は、実行が完了すると自動的にトランザクションをコミットします.つまり、SQL文を実行するとすぐにCOMMIT操作が自動的に暗黙的に実行されます.エラーが発生した場合、トランザクションは前のステータスにロールバックされます.
SQL SERVERとMY SQLでは、自動コミットトランザクションがデフォルトでオンになり、ORACLEではトランザクションが明示的にコミットされます.これら3つの製品は、自動コミットトランザクション・モードを開閉するためのそれぞれの方法を提供しています.具体的には、次のとおりです.
1)MYSQLでは、現在のセッションまたはグローバルの自動コミットトランザクション・モードをオンまたはオフにするには、次の文を使用します.
set session autocommit=0; -- 0   ,1   ;session         ,global       

2)SQL SERVERでは、次の文を使用してオートコミットトランザクションモードをオフまたはオンにします.または、Sql Server Management Studioを使用して、Tools->Options Query Execution->SQL Server->ANSIオプションでSET IMPLICIT_をチェックします.TRANSACTIONSは、自動トランザクションコミットモードをオンまたはオフに設定します.
SET IMPLICIT_TRANSACTIONS ON; -- ON                  ,OFF                     

3)ORACLEは次の文でオートコミットトランザクションモードをオンまたはオフにする
set autocommit on; -- on         ,off           

 
2.明示的な取引
トランザクション開始文を指定してトランザクションを明示的に開始し、コマンドまたはロールバックコマンドを発行またはロールバックすることによってトランザクションを終了するコードがユーザー定義の明示的なトランザクションです.SQL SERVER、MYSQL、ORACLEは、次のように明示的なトランザクションを開始します.
1)SQL SERVERはBEGIN[TRAN|TRANSACTION]を皮切りとし、COMMIT[WORK|TRAN|TRANSACTION]またはROLLBACK[WORK|TRAN|TRANSACTION]を最後とする.
2)MYSQLはSTART TRANSACTION|BEGIN[WORK]で始まり、COMMIT[WORK]またはROLLBACK[WORK]で終わる.
3)ORACLEトランザクションは最初のSQL文の実行から始まり、トランザクションの開始と終了を特に指定する必要はありません.1つのトランザクションの終了は次のトランザクションの開始を意味します.COMMITまたはSAVEPOINT句を持たないROLLBACKコマンドで終了します.
 
3.暗黙取引
暗黙的なトランザクションでは、BEGIN TRANASACTIONを使用してトランザクションを開く必要はありません.各SQL文の最初の実行は、COMMIT[TRANSACTION]でトランザクションをコミットまたはROLLBACK[TRANSACTION]でロールバックしてトランザクションを終了するまでトランザクションを開きます.
1)SQL SERVERでは、次の文を使用して暗黙的なトランザクション・モードをオンおよびオフにします.または、Sql Server Management Studioを使用して、Tools->Options Query Execution->SQL Server->ANSIオプションでSET IMPLICIT_をチェックします.TRANSACTIONSは、暗黙的なトランザクション・モードをオンまたはオフに設定します.
SET IMPLICIT_TRANSACTIONS ON --ON   ,OFF   

2)ORACLEのデフォルトは暗黙的にトランザクションを開き、明示的にトランザクションをコミットします.次の文で自動コミットトランザクションをオンにして、暗黙的なコミットトランザクションを達成できます.
SET autocommit ON; -- on         ,off           

3)MYSQLは自動コミットトランザクションをオフにすることで、暗黙的にトランザクションをオープンし、明示的にトランザクションをコミットする目的を達成する.
SET session autocommit = 0; -- 0   ,1   ;session         ,global