Transactions

4D - Documentation   Français   English   German   Japanese   4D SQL Reference, Table of Contents   4D SQL Reference, Index   Back   Previous   Next

version 11


Transactions are a set of SQL statements that are executed together. Either all of them are successful or they have no effect. Transactions use locks to preserve data integrity during their execution. If the transaction finishes successfully, you can use the COMMIT statement to permanently store its modifications. Otherwise, using the ROLLBACK statement will cancel any modifications and restore the database to its previous state.

There is no difference between a 4D transaction and an SQL transaction. Both types share the same data and process. SQL statements passed between Begin SQL/End SQL tags, the QUERY BY SQL and the integrated generic SQL commands applied to the local database are always executed in the same context as standard 4D commands.

Note: 4D provides an "Auto-commit" option which can be used to start and validate transactions automatically when using SIUD commands (SELECT, INSERT, UPDATE and DELETE) in order to preserve data integrity. For more information, please refer to the Principles for integrating 4D and the 4D SQL engine section.

The following examples illustrate the different combinations of transactions.

Neither "John" nor "Smith" will be added to the emp table:

   SQL LOGIN(SQL_INTERNAL ;"";"")   `Initializes the 4D SQL engine
   START TRANSACTION   `Starts a transaction in the current process
   Begin SQL
      INSERT INTO emp
      (NAME)
      VALUES ('John');
   End SQL
   SQL EXECUTE("START")   `Another transaction in the current process
   SQL CANCEL LOAD
   SQL EXECUTE("INSERT INTO emp (NAME) VALUES ('Smith')")  `This statement is executed in the same process
   SQL CANCEL LOAD
   SQL EXECUTE("ROLLBACK")
`Cancels internal transaction of the pro-cess 
   CANCEL TRANSACTION
`Cancels external transaction of the process
   SQL LOGOUT

Only "John" will be added to the emp table:

   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")
`Cancels internal transaction of the pro-cess 
   VALIDATE TRANSACTION  `Validates external transaction of the process
   SQL LOGOUT

Neither "John" nor "Smith" will be added to the emp table. The exter-nal transaction cancels the internal transaction:

   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")  `Validates internal transaction of the process 
   CANCEL TRANSACTION  `Cancels external transaction of the process
   SQL LOGOUT

"John" and "Smith" will be added to the emp table:

   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")  `Validates internal transaction of the process 
   VALIDATE TRANSACTION   `Validates external transaction of the process
   SQL LOGOUT

4D - Documentation   Français   English   German   Japanese   4D SQL Reference, Table of Contents   4D SQL Reference, Index   Back   Previous   Next