Atomicidade
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_holderebalance; -
tabela
UserLogscom colunas:account_number,action,timestampetc. A combinação deaccount_numberetimestampé 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.
12SELECT * FROM BankAccounts;
12SELECT * FROM UserLogs;
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;
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.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 4.55
Atomicidade
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_holderebalance; -
tabela
UserLogscom colunas:account_number,action,timestampetc. A combinação deaccount_numberetimestampé 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.
12SELECT * FROM BankAccounts;
12SELECT * FROM UserLogs;
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;
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.
Obrigado pelo seu feedback!