Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Atomicidade | Acid
Quizzes & Challenges
Quizzes
Challenges
/
Otimização de SQL e Recursos de Consulta

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 determinada unidade lógica sejam concluídas, ou nenhuma delas será.

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.

Considere um cenário em que existam 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.

Nos próximos exemplos de código, será demonstrado como os dados são inseridos e gerenciados nessas tabelas, ilustrando operações atômicas utilizando entradas reais do esquema fornecido.

12
SELECT * FROM BankAccounts;
copy
12
SELECT * FROM UserLogs;
copy

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 básico de como isso pode ser feito utilizando uma transação:

123456789101112131415161718
-- 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; -- Check the result SELECT * FROM BankAccounts; SELECT * FROM UserLogs;
copy

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 final 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

Awesome!

Completion rate improved to 4.55

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 determinada unidade lógica sejam concluídas, ou nenhuma delas será.

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.

Considere um cenário em que existam 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.

Nos próximos exemplos de código, será demonstrado como os dados são inseridos e gerenciados nessas tabelas, ilustrando operações atômicas utilizando entradas reais do esquema fornecido.

12
SELECT * FROM BankAccounts;
copy
12
SELECT * FROM UserLogs;
copy

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 básico de como isso pode ser feito utilizando uma transação:

123456789101112131415161718
-- 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; -- Check the result SELECT * FROM BankAccounts; SELECT * FROM UserLogs;
copy

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 final 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