トランザクション

4D - Documentation   Fran溝is   English   German   日本語   4D SQL Reference目次   4D SQL Referenceインデックス   Back   Previous   Next

version 11


トランザクションはグループで実行されるSQL文のセットです。すべてが正しく実行されるか、まったく効果を及ぼさないかです。トランザクションは実行時にデータの整合性を保つためロックを使用します。トランザクションが正しく終了したら、COMMIT文を使用して更新を永続化します。そうでなければ、ROLLBACK文を使用して更新をキャンセルし、以前の状態にデータベースを戻します。

4DのトランザクションとSQLのトランザクションの間に違いはありません。両タイプのトランザクションは同じデータおよびプロセスを共有します。ローカルデータベースに適用されるBegin SQL/End SQLの間のSQL文、QUERY BY SQL、そして統合された汎用SQLコマンドは、常に標準のSQLコマンドと同じコンテキストで実行されます。

以下の例題は、複数の異なるトランザクション使用した場合の動作を説明します:

empテーブルに“John”も“Smith”も追加されません:

   SQL LOGIN(SQL_INTERNAL ;"";"")   `4D SQLエンジンを初期化
   START TRANSACTION   `カレントプロセスでトランザクションを開始
   Begin SQL
      INSERT INTO emp
      (NAME)
      VALUES ('John');
   End SQL
   SQL EXECUTE("START")   `カレントプロセスで他のトランザクションを開始
   SQL CANCEL LOAD
   SQL EXECUTE("INSERT INTO emp (NAME) VALUES ('Smith')")  `この文は同じプロセスで実行される
   SQL CANCEL LOAD
   SQL EXECUTE("ROLLBACK")
`プロセスの内側のトランザクションをキャンセル
   CANCEL TRANSACTION
`プロセスの外側のトランザクションをキャンセル
   SQL LOGOUT

empテーブルに“John”のみが追加される:

   SQL LOGIN(SQL_INTERNAL ;"";"")
   START TRANSACTION
   Begin SQL
      INSERT INTO emp
      (NAME)
      VALUES ('John');
   End SQL
   SQL EXECUTE("START")
   SQL CANCEL LOAD
   SQL EXECUTE("INSERT INTO emp (NAME) VALUES ('Smith')")
   SQL CANCEL LOAD
   SQL EXECUTE("ROLLBACK")
`プロセスの内側のトランザクションをキャンセル
   VALIDATE TRANSACTION  `プロセスの外側のトランザクションを有効にする
   SQL LOGOUT

empテーブルに“John”も“Smith”も追加されません。外側のトランザクションが内側のトランザクションもキャンセルする:

   SQL LOGIN(SQL_INTERNAL ;"";"")
   START TRANSACTION
   Begin SQL
      INSERT INTO emp
      (NAME)
      VALUES ('John');
   End SQL
   SQL EXECUTE("START")
   SQL CANCEL LOAD
   SQL EXECUTE("INSERT INTO emp (NAME) VALUES ('Smith')")
   SQL CANCEL LOAD
   SQL EXECUTE("COMMIT")  `プロセスの内側のトランザクションを有効にする
   CANCEL TRANSACTION  `プロセスの外側のトランザクションをキャンセル
   SQL LOGOUT

empテーブルに“John”と“Smith”が追加される:

   SQL LOGIN(SQL_INTERNAL ;"";"")
   START TRANSACTION
   Begin SQL
      INSERT INTO emp
      (NAME)
      VALUES ('John');
   End SQL
   SQL EXECUTE("START")
   SQL CANCEL LOAD
   SQL EXECUTE("INSERT INTO emp (NAME) VALUES ('Smith')")
   SQL CANCEL LOAD
   SQL EXECUTE("COMMIT")  `プロセスの内側のトランザクションを有効にする
   VALIDATE TRANSACTION   `プロセスの外側のトランザクションを有効にする
   SQL LOGOUT

4D - Documentation   Fran溝is   English   German   日本語   4D SQL Reference目次   4D SQL Referenceインデックス   Back   Previous   Next