4D v16

Transações

Página Inicial

 
4D v16
Transações

Transações  


 

As transações são um conjunto de instruções SQL executadas em bloco. Ou todas as instruções têm êxito ou nenhuma delas. As transações utilizam blocos para preservar a integridade dos dados durante sua execução. Se a transação termina corretamente, pode utilizar o comando COMMIT para armazenar permanentemente suas modificações. Caso contrário, chame o comando ROLLBACK para cancelar todas as modificações e restaurar o banco de dados a seu estado anterior.

Não há diferença entre uma transação 4D e uma transação SQL. Os dois tipos compartilham os mesmos dados e processos. As instruções SQL incluídas em uma estrutura Begin SQL/End SQL, o comando QUERY BY SQL e os comandos SQL genéricos integrados aplicados a base local sempre se executam no mesmo contexto que os comandos 4D padrão.

Nota: 4D oferece a opção "Auto-commit" que pode ser utilizada para iniciar e validar as transações de forma automática ao usar os comandos SIUD (SELECT, INSERT, UPDATE e DELETE) com o propósito de preservar a integridade dos dados. Para maior informação, consulte a seção .

Os seguintes exemplos ilustram as diferentes combinações de transações.

Nem "John", nem "Smith" serão adicionados a tabela emp:
 SQL LOGIN(SQL_INTERNAL;"";"") `Inicializar o motor SQL de 4D
 START TRANSACTION `Iniciar uma transação no processo atual
 Begin SQL
    INSERT INTO emp
    (NAME)
    VALUES ('John');
 End SQL SQL EXECUTE("START") `Outra transação no processo atual
 SQL CANCEL LOAD SQL EXECUTE("INSERT INTO emp (NAME) VALUES ('Smith')") `Esta instrução é executada no mesmo processo
 SQL CANCEL LOAD SQL EXECUTE("ROLLBACK") `Cancelar a transação interna do processo
 CANCEL TRANSACTION `Cancelar a transação externa do processo
 SQL LOGOUT


Somente “John” será adicionado a tabela 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 a transação interna do processo
 VALIDATE TRANSACTION `Validar a transação externa do processo
 SQL LOGOUT

Nem “John” nem “Smith” serão adicionados a tabela emp. A transação externa anula a transação 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 a transação interna do processo
 CANCEL TRANSACTION `Cancelar a transação externa do processo
 SQL LOGOUT

“John” e “Smith” serão adicionados a tabela 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 a transação interna do processo
 VALIDATE TRANSACTION `Validar a transação externa do processo
 SQL LOGOUT

 
PROPRIEDADES 

Produto: 4D
Tema: Transações

 
HISTÓRIA 

 
ARTICLE USAGE

Manual de SQL ( 4D v16)