Transações banco de dados
“Transação é um programa em execução que forma uma unidade lógica de processamento de dados” – Elmasri
"Transactions provide a mechanism for grouping a series of database changes into one logical operation. After changes are made to the database, these changes can be committed or canceled as a single unit. Transactions ensure that the properties of atomicity, consistency, isolation, and durability (ACID) are followed so that data is correctly committed to the database".
“uma transação agrupa um conjunto de instruções SQL (tipicamente INSERT/UPDATE/DELETE) que são sempre executadas como uma unidade lógica.
Se uma das operações provocar algum erro, os efeitos de todas as operações serão revertidos (ROLLBACK)”.
“Sistemas de Processamento de Transação são
sistemas com grandes banco de dados e centenas de usuários executando transações concorrentes no banco de dados”
Elmasri
Propriedade ACID
Atomicidade
Consistência
Isolamento Durabilidade
No SQL Server 2005
BEGIN TRANSACTION
UPDATE TABELA1 SET CAMPO1 = ‘NOVO VALOR’ WHERE CAMPO2 = 35 IF @@ERROR 0 ROLLBACK ELSE COMMIT
BEGIN TRANSACTION TRAN_01
DELETE FROM TABELA1 IF @@ERROR 0 ROLLBACK TRANSACTION TRAN_01 ELSE COMMIT TRANSACTION TRAN_01
BEGIN TRANSACTION inicia uma transação;
COMMIT TRANSACTION “fecha a transação em curso e torna definitivas as alterações efetuadas sobre o banco de dados durante essa transacção; liberta todos os locks a tabelas e linhas” ROLLBACK TRANSACTION [savepoint] “fecha a transação em curso e desfaz as alterações efetuadas sobre o banco de dados durante essa transação; coloca o banco de dados no estado em que estava antes do início da transação; liberta todos os locks a tabelas e linhas” SAVE TRANSACTION nome “marca um ponto no código como referência para realizar ROLLBACKs parciais” – conceito de Save Points Ver @@TRANCOUNT
Locks e DeadLocks
“Os mecanismos de locking e