Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Atomicidade | Acid
Técnicas Avançadas em SQL

bookAtomicidade

Atomicidade em SQL refere-se a uma das propriedades ACID, que garante o uso de transações ao consultar dados utilizando SQL.
No contexto de bancos de dados SQL, a atomicidade assegura que todas as operações dentro de uma unidade lógica específica sejam concluídas, ou nenhuma delas seja.

Processamento de transações em SQL

Características principais

  • Rollback: Se qualquer parte falhar (por exemplo, devido a erro ou violação de restrição), toda a transação é revertida, desfazendo as alterações;

  • Commit: Se todas as operações forem bem-sucedidas, a transação é confirmada, tornando as alterações permanentes.

Criação de transações em SQL

Em SQL, cada instrução individual é considerada uma transação.
No entanto, é possível criar manualmente transações que contenham mais de uma instrução.

Vamos imaginar um cenário com duas tabelas:

  • a tabela BankAccounts, que inclui as seguintes colunas: account_number (Primary Key), account_holder e balance;

  • tabela UserLogs com colunas: account_number, action, timestamp etc. A combinação de account_number e timestamp é uma chave primária composta dessa relação.

Agora, considere um cenário em que se pretende criar uma nova conta bancária e, simultaneamente, gerar um registro de log para indicar a adição da nova conta.
É fundamental que essas duas ações, adicionar a conta e registrar o evento, sejam tratadas como uma única unidade lógica e estejam envolvidas em uma única transação. Veja um exemplo muito básico de como isso pode ser feito com uma transação:

-- Begin the transaction
BEGIN;

-- Insert a new bank account with account number 109, account holder Emma Watson, and initial balance of 0
INSERT INTO BankAccounts (account_number, account_holder, balance)
VALUES (109, 'Emma Watson', 0);

-- Step 2: Add log entry if the account was added
-- Insert a log entry into the UserLogs table indicating that a new account was added with account number 109
INSERT INTO UserLogs (account_number, action)
VALUES (109, 'New account added');

-- Commit the transaction, making the changes permanent
COMMIT;

Na consulta acima, utilizamos o bloco BEGIN para indicar que todas as instruções seguintes devem ser consideradas como uma única unidade — se uma delas não for executada, nenhuma das instruções deve ser executada.
A palavra-chave COMMIT indica o fim do bloco de transação.

question mark

O que o conceito de atomicidade garante no contexto de transações de banco de dados?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 3

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you explain what would happen if one of the INSERT statements failed?

How does rollback work in this scenario?

Can you show an example where the transaction fails and is rolled back?

Awesome!

Completion rate improved to 4.35

bookAtomicidade

Deslize para mostrar o menu

Atomicidade em SQL refere-se a uma das propriedades ACID, que garante o uso de transações ao consultar dados utilizando SQL.
No contexto de bancos de dados SQL, a atomicidade assegura que todas as operações dentro de uma unidade lógica específica sejam concluídas, ou nenhuma delas seja.

Processamento de transações em SQL

Características principais

  • Rollback: Se qualquer parte falhar (por exemplo, devido a erro ou violação de restrição), toda a transação é revertida, desfazendo as alterações;

  • Commit: Se todas as operações forem bem-sucedidas, a transação é confirmada, tornando as alterações permanentes.

Criação de transações em SQL

Em SQL, cada instrução individual é considerada uma transação.
No entanto, é possível criar manualmente transações que contenham mais de uma instrução.

Vamos imaginar um cenário com duas tabelas:

  • a tabela BankAccounts, que inclui as seguintes colunas: account_number (Primary Key), account_holder e balance;

  • tabela UserLogs com colunas: account_number, action, timestamp etc. A combinação de account_number e timestamp é uma chave primária composta dessa relação.

Agora, considere um cenário em que se pretende criar uma nova conta bancária e, simultaneamente, gerar um registro de log para indicar a adição da nova conta.
É fundamental que essas duas ações, adicionar a conta e registrar o evento, sejam tratadas como uma única unidade lógica e estejam envolvidas em uma única transação. Veja um exemplo muito básico de como isso pode ser feito com uma transação:

-- Begin the transaction
BEGIN;

-- Insert a new bank account with account number 109, account holder Emma Watson, and initial balance of 0
INSERT INTO BankAccounts (account_number, account_holder, balance)
VALUES (109, 'Emma Watson', 0);

-- Step 2: Add log entry if the account was added
-- Insert a log entry into the UserLogs table indicating that a new account was added with account number 109
INSERT INTO UserLogs (account_number, action)
VALUES (109, 'New account added');

-- Commit the transaction, making the changes permanent
COMMIT;

Na consulta acima, utilizamos o bloco BEGIN para indicar que todas as instruções seguintes devem ser consideradas como uma única unidade — se uma delas não for executada, nenhuma das instruções deve ser executada.
A palavra-chave COMMIT indica o fim do bloco de transação.

question mark

O que o conceito de atomicidade garante no contexto de transações de banco de dados?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 3
some-alt