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;"";"") 
 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 LOGOUTSomente “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") 
 VALIDATE TRANSACTION 
 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") 
 CANCEL TRANSACTION 
 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") 
 VALIDATE TRANSACTION 
 SQL LOGOUT