4D v16

Transacciones

Inicio

 
4D v16
Transacciones

Transacciones  


 

Las transacciones son un conjunto de instrucciones SQL ejecutadas en bloque. O todas las instrucciones tienen éxito o no ninguna de ellas. Las transacciones utilizan bloqueos para preservar la integridad de los datos durante su ejecución. Si la transacción termina correctamente, puede utilizar el comando COMMIT para almacenar permanentemente sus modificaciones. De lo contrario, llame el comando ROLLBACK para cancelar todas las modificaciones y restaurar la base de datos a su estado anterior.

No hay diferencia entre una transacción 4D y una transacción SQL. Los dos tipos comparten los mismos datos y procesos. Las instrucciones SQL incluidas en una estructura Begin SQL/End SQL, el comando QUERY BY SQL y los comandos SQL genéricos integrados aplicados a la base local siempre se ejecutan en el mismo contexto que los comandos 4D estándar.

Nota: 4D ofrece la opción "Auto-commit" que se puede utilizar para iniciar y validar las transacciones de forma automática al usar los comandos SIUD (SELECT, INSERT, UPDATE y DELETE) con el fin de preservar la integridad de los datos. Para mayor información, consulte la sección .

Los siguientes ejemplos ilustran las diferentes combinaciones de transacciones.

Ni "John", ni "Smith" se añadirán a la tabla emp:
 SQL LOGIN(SQL_INTERNAL;"";"") `Inicializar el motor SQL de 4D
 START TRANSACTION `Iniciar una transacción en el proceso actual
 Begin SQL
    INSERT INTO emp
    (NAME)
    VALUES ('John');
 End SQL SQL EXECUTE("START") `Otra transacción en el proceso actual
 SQL CANCEL LOAD SQL EXECUTE("INSERT INTO emp (NAME) VALUES ('Smith')") `Esta instrucción se ejecuta en el mismo proceso
 SQL CANCEL LOAD SQL EXECUTE("ROLLBACK") `Cancelar la transacción interna del proceso
 CANCEL TRANSACTION `Cancelar la transacción externa del proceso
 SQL LOGOUT


Sólo “John” se añadirá a la tabla emp:

 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") `Cancelar la transacción interna del proceso
 VALIDATE TRANSACTION `Validar la transacción externa del proceso
 SQL LOGOUT

Ni “John” ni “Smith” se añadirán a la tabla emp. La transacción externa anula la transacción interna:
 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") `Validar la transacción interna del proceso
 CANCEL TRANSACTION `Cancelar la transacción externa del proceso
 SQL LOGOUT

“John” y “Smith” se añadirá a la tabla emp:

 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") `Validar la transacción interna del proceso
 VALIDATE TRANSACTION `Validar la transacción externa del proceso
 SQL LOGOUT

 
PROPIEDADES 

Producto: 4D
Tema: Transacciones

 
HISTORIA 

 
ARTICLE USAGE

Manual de SQL ( 4D v16)