Controle de transações em SQL



Documentos relacionados
TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso):

Gerenciamento de Transações

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

Banco de Dados. Prof. Antonio

EXEMPLOS DE COMANDOS NO SQL SERVER

CONCORRÊNCIA. Buscando aumentar os níveis de concorrência redução da espera em detrimento do isolamento, a SQL definiu alguns níveis de isolamento.

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

CONCORRÊNCIA. 1. Introdução. Recursos exclusivos. Não necessita controle. Abundância de recursos compartilhados. Controle necessário mas mínimo

Tópicos Avançados em Banco de Dados Gerenciamento de Transações em Banco de Dados. Prof. Hugo Souza

Tópicos Avançados de Bases de Dados

SQL Structured Query Language

BANCO DE DADOS: SQL. Edson Anibal de Macedo Reis Batista. 27 de janeiro de 2010

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Sistemas de Banco de Dados

Tarefa Orientada 15 Manipulação de dados

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

IMPLEMENTAÇÃO DE BANCO DE DADOS

Banco de Dados. Marcio de Carvalho Victorino Exercícios SQL

Introdução ao SQL. Aécio Costa

Linguagem de Consulta Estruturada SQL- DML

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar


Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

17/10/2008. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Redes de Computadores

Tarefa Orientada 19 Triggers

BANCO DE DADOS WEB AULA 4. linguagem SQL: subconjuntos DCL, DDL e DML. professor Luciano Roberto Rocha.

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

A & F Consultoria em Sistemas e Treinamentos 2014 af.tecnoserv@gmail.com. A linguagem SQL. Autor: Hélio de Almeida Fonte: Wikipédia

Prof.: Clayton Maciel Costa

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

O que são Bancos de Dados?

Tarefa Orientada 16 Vistas

1. SQL Instrumental Select Delete Update Insert Group by Having Unnion All...

Structured Query Language (SQL)

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

Transações Seguras em Bancos de Dados (MySQL)

Oracle PL/SQL Overview

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1

14/08/2008. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Integrando Java com Banco de Dados

Introdução ao SQL. O que é SQL?

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

Profº Aldo Rocha. Banco de Dados

Programação Orientada a Objetos JDBC Java Database Connectivity

Prof. Carlos Majer Aplicações Corporativas UNICID

Treinamento sobre SQL

Principais Instruções em SQL

Sumário. Recuperação de Falhas

SQL. Autor: Renata Viegas

Controle de Transações. Banco de Dados André Luiz do Vale Soares

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados

A linguagem SQL

Banco de Dados Oracle. Faculdade Pernambucana - FAPE

Gatilhos (Triggers) Prof. Márcio Bueno Elaborado por Maria Lígia B. Perkusich

Linguagem SQL Sub-linguagem DDL

Banco de Dados. Maurício Edgar Stivanello

Crash recovery é similar ao instance recovery, onde o primeiro referencia ambientes de instância exclusiva e o segundo ambientes parallel server.

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1.

BANCO DE DADOS CONCEITOS BÁSICOS

Prof. Luiz Fernando. Unidade III ADMINISTRAÇÃO DE

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

1. Sua primeira tarefa é determinar a estrutura da tabela DEPARTMENTS e seu conteúdo.

Introdução à linguagem SQL

Histórico de revisões

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

INTRODUÇÃO. Diferente de Bando de Dados

Curso Superior de Tecnologia em BD Curso Superior de Tecnologia em DAI

Oracle Comandos para Processamento de Transações

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Projeto de Banco de Dados

Comandos DDL. id_modulo = id_m odulo

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

Transcrição:

Transações

Controle de transações em SQL Uma transação é implicitamente iniciada quando ocorre uma operação que modifica o banco de dados (INSERT, UPDATE ou DELETE). Uma transação pode terminar normalmente (COMMIT) ou ser desfeita até o início da transação (ROLLBACK) ou até um ponto de controle (ROLLBACK TO SAVEPOINT).

Exemplos: Controle de transações em SQL INSERT...; DELETE...; UPDATE...; COMMIT; INSERT...; DELETE...; ROLLBACK; UPDATE...; COMMIT; INSERT...; DELETE...; SAVEPOINT sp1; UPDATE...; ROLLBACK TO sp1; DELETE...; SAVEPOINT sp2; UPDATE...; ROLLBACK TO sp2; UPDATE...; COMMIT;

Transação Uma transação é uma unidade lógica de trabalho, que faz acesso e possivelmente modifica dados. Uma transação pode ser formada por uma ou mais instruções que realizem operações sobre uma base de dados. Exemplo de transação: Transferência entre duas contas bancárias UPDATE CONTA SET SALDO = SALDO - 50.00 WHERE NUMCONTA = 100 UPDATE CONTA SET SALDO = SALDO + 50,00 WHERE NUMCONTA = 200;

Transação Começa quando for executada a primeira instrução SQL executável. Termina com um dos seguintes eventos: COMMIT ou ROLLBACK é emitida Instrução DDL é executada (commit automático) O usuário sai do SQL*Plus O sistema cai

Transação Propriedades desejáveis de transações (ACID): 1) Atomicidade: Uma transação é uma unidade indivisível, não pode ser executada parcialmente 2) Consistente: Uma transação leva o banco de um estado consistente a outro estado também consistente 3) Isolamento: Outras transações não devem enxergar alterações feitas por uma transação até que ela seja completada. 4) Durabilidade: Quando uma transação for confirmada ela deve ser permanente não podendo ser desfeita

Transação Compreendendo as propriedades O acesso ao BD é obtido por 2 operações: 1) read(x): transfere o item X do disco para um buffer na memória 2) write(x): transfere o item de dados X do buffer para o disco Exemplo de transação: Transferir R$ 50,00 de uma conta para outra Transação: Ti Contas: A e B Ti : read(a) A := A 50 write(a) read(b) B := B + 50 write(b)

Transação Onde pode falhar: Atomicidade: Falha após write(a) Consistência: A soma da contas A e B deve permanecer a mesma ao final Isolamento: O BD está inconsistente durante a transação, uma outra transação poderá ler estes dados. Ex. Soma dos saldos das contas. Durabilidade: As alterações são feitas inicialmente na memória principal, uma falha que ocorra antes da gravação em disco compromete esta propriedade

Controle de Transações O controle de transações lógicas no Oracle é feito através dos comandos COMMIT e ROLLBAK. O trabalho do banco de dados deve ser processado em agrupamentos lógicos, ou seja, o Banco de Dados deve receber alterações quaisquer mantendo-se coerente com o que o mesmo representa. A transação é um conjunto de mudanças feitas no BD entre os comandos COMMIT.

Ratifica/confirma a transação corrente fazendo todas as trocas no BD (grava fisicamente). Mudanças como INSERT, UPDATE e DELETE devem ser feitas em grupos como transações lógicas, e depois submetidas, através do comando COMMIT, ao Banco de Dados. Isto assegura a gerência e a integridade dos dados. Sintaxe: COMMIT Commit

Commit Existe a opção AUTOCOMMIT que faz com que cada mudança seja submetida após a entrada. Só deve ser usada quando as mudanças que serão feitas não estão logicamente relacionadas. Comandos que causam um COMMIT automático: ALTER, AUDIT, CREATE, DROP, EXIT, DISCONNECT, GRANT, NOAUDIT, QUIT, REVOKE.

Rollback O comando ROLLBACK cancela mudanças completadas, mas não submetidas ao BD, deixando assim o BD como se tais mudanças nunca tivessem sido feitas. Sintaxe: ROLLBACK O rollback é executado quando ocorre uma falha no sistema ou VOCÊ deseja desfazer as mudanças.

Exemplo Ao tentar remover um registro da tabela TEST, você pode acidentalmente esvaziar a tabela. Você pode corrigir o erro, emitir novamente a instrução apropriada e tornar permanentes as alterações dos dados. DELETE FROM test; 25.000 rows deleted. ROLLBACK; Rollback complete. DELETE FROM test WHERE id = 100; 1 row deleted. SELECT * FROM test WHERE id = 100; No rows selected. COMMIT; Commit complete.

Comandos Savepoint Dentro de uma transação extensa pode-se declarar pontos de salvamento (SAVEPOINT s) intermediários dividindo o trabalho na transação: INSERT... DELETE... UPDATE... SAVEPOINT PRIMEIRO INSERT... DELETE... UPDATE... SAVEPOINT SEGUNDO

Comandos Savepoint Através dos SAVEPOINT s que foi declarado pode-se desfazer partes de uma transação, deixando outras partes intactas. Exemplo: ROLLBACK TO SAVEPOINT SEGUNDO Esta instrução anula os efeitos de todas as instruções posteriores ao SAVEPOINT SEGUNDO.

Resumo Transações de Banco de Dados Começa quando for executada a primeira instrução SQL executável. Termina com um dos seguintes eventos: COMMIT ou ROLLBACK é emitida Instrução DDL ou DCL é executada (commit automático) O usuário sai do SQL*Plus O sistema cai

Controlando Transações

Estado dos dados antes de COMMIT ou ROLLBACK O Estado anterior dos dados pode ser recuperado O usuário atual pode revisar os resultados das operações DML usando a instrução SELECT. Outros usuários não poderão ver resultados das instruções DML do usuário atual. As linhas afetadas são bloqueadas, outros usuários não poderão alterar os dados dentro das linhas afetadas. Estado dos dados após COMMIT As alterações nos dados são feitas permanentemente no banco de dados. O estado anterior dos dados é perdido permanentemente. Todos os usuários podem ver os resultados. As linhas afetadas são desbloqueadas, essas linhas estão disponíveis para serem manipuladas por outros usuários. Todos os savepoints são apagados.

Exercícios

1. Crie uma tabela nomeada MY_EMPLOYEE com a seguinte estrutura. Name Null? Type ----------- -------------- ----------------- ID NOT NULL NUMBER(4) LAST_NAME FIRST_NAME USERID SALARY VARCHAR2(25) VARCHAR2(25) VARCHAR2(25) NUMBER(9,2)

2. Adicione a primeira linha de dados à tabela MY_EMPLOYEE a partir dos dados do exemplo a seguir. Não liste as colunas na cláusula INSERT. 3 Preencha a tabela MY_EMPLOYEE com duas linhas de dados de exemplo da lista anterior. Desta vez, liste as colunas explicitamente na cláusula INSERT.

4. Confirme a adição à tabela (select) 5. Torne estas transações permanentes 6. Altere o sobrenome do funcionário 3 para Drexler. 7. Altere o salário para 1000 de todos os funcionários que ganhem menos de 900. 8. Verifique as alterações na tabela. 8.1 Efetive as alterações no banco. 9. Delete Betty Dancs da tabela MAY_EMPLOYEE. 10. Faça um select para mostrar que a usuária foi removida 10.1 Desfaça a transação 10.2 - Faça um select para mostrar que a usuária está na tabela. 10.3 Delete novamente a usuária 10.4. Efetive as transações pendentes no banco. 11 Faça um select para mostrar a atual situação da tabela

12. Esvazie a tabela inteira. 13. Confirme se a tabela está vazia. 14. Execute o rollback 15. A tabela está vazia?

16. Marque um ponto intermediário no processamento da transação. 17. Esvazie a tabela inteira. 18. Confirme se a tabela está vazia. 19. Marque um ponto intermediário no processamento da transação. 20. Insira mais um registro na tabela 21. Confirme a adição à tabela. 22. Descarte a operação INSERT anterior. 23. Faça um select. A tabela está vazia? 24. Descarte a operação DELETE. 25. Faça um select. A tabela está vazia?