• No se han encontrado resultados

Aula 10 - Proc + trig + Fun + view + trans

N/A
N/A
Protected

Academic year: 2020

Share "Aula 10 - Proc + trig + Fun + view + trans"

Copied!
36
0
0

Texto completo

(1)

Programação em Banco

de Dados

(2)

2

Views

(3)

Views

 É uma “tabela virtual” criada a partir de uma consulta, para

representar uma determinada visão dos dados.

 Uma view pode ser consultada da mesma forma que uma tabela,

mas sua atualização está sujeita a certas regras.

 Embora consigamos visualizar os registros através da view, os

(4)

4

Views

 Para que utilizar views:

 Definir a percepção que um usuário ou aplicação possui dos

dados

 Simplificar a construção de consultas, definindo consultas

frequentes ou complexas

 Possibilitar a visualização de maneira diferenciada dos mesmos

dados

 Restringir o acesso aos dados: um usuário que não possua

(5)

Views

 Criando views – exemplo:

CREATE VIEW vw_empregado AS

SELECT

p.PrimeiroNome, d.IDEquipe,

d.DataContratacao FROM

Professores P

JOIN Disciplina D ON D.IDProf = P.IDProf;

(6)

6

Views

 Alterando views – exemplo:

ALTER VIEW vw_empregado AS SELECT p.PrimeiroNome, p.Sobrenome, d.IDEquipe, d.DataContratacao FROM Professores P

JOIN Disciplina D ON D.IDProf = P.IDProf;

Excluindo views – exemplo:

(7)

Stored Procedure

STORED PROCEDURES /

PROCEDIMENTOS

(8)

8

Stored Procedure

 Stored Procedures nada mais são do que um conjunto de

instruções SQL que são executadas dentro do banco de dados. É como escrever um programa dentro do próprio banco de dados para executar tudo lá dentro.

 Podemos conceituar Procedures ou Stored Procedures

(procedimentos armazenados) como blocos de comandos SQL agrupados como uma unidade que executam um conjunto de operações e tarefas relacionadas.

Stored Procedures são procedimentos executados no servidor, e

(9)

Stored Procedure

 São códigos armazenados no servidor que podem ser executados a

qualquer momento

 Uma stored procedure pode receber e enviar parâmetros de/para

uma aplicação

 São armazenadas pré-compiladas, o que melhora sua performance

(10)

10

Stored Procedure

 Sintaxe:

CREATE PROCEDURE <nome_procedure>

(parametro<tipo>[parametro <tipo>] //parâmetros AS

BEGIN

(11)

Stored Procedure

 Exemplo:

CREATE PROC Departments_Members()

SELECT Dep_Name, COUNT(Emp_ID) NumberOfMember

FROM Departments D, Employees E WHERE D.Dep_ID = E.Dep_ID

GROUP BY Dep_Name

Executando:

Execute Departments_Members

(12)

12

Stored Procedure

 Exemplo (recebendo parâmetro):

CREATE PROCEDURE sp_ObtemInventario (local varchar(10))

SELECT produto, quantidade FROM inventario

WHERE deposito = local;

Executando uma stored procedure:

EXECUTE nome_procedure

call nome_procedure (mysql)

Exemplo:

EXECUTE sp_ObtemInventario ‘Belo Horizonte’

(13)

Stored Procedure

Comandos de decisão:

IF <teste> BEGIN

Comandos END

ELSE

BEGIN

Comandos END

Declarar variáveis:

(14)

14

Stored Procedure

Comando de repetição

WHILE <teste> BEGIN

(15)

Stored Procedure

Um exemplo mais completo:

CREATE PROCEDURE sp_retorna_quantidade

@estado char(2)

AS

BEGIN

DECLARE @quantidade INT

SELECT

@quantidade = count(*) FROM

lojas WHERE

(16)

16

Triggers

(17)

Triggers

 Trigger é utilizada para poder colocar uma determinada regra de

negócio da aplicação.

 Os Triggers padrão são códigos que são disparadas

automaticamente quando uma operação como um: - INSERT

- UPDATE - DELETE

 Quando ocorre o disparo:

- BEFORE: antes da execução do comando; - AFTER: depois da execução do comando;

 Aplicação:

(18)

18

Triggers

 Sintaxe:

CREATE TRIGGER <nome_trigger> { BEFORE | AFTER }

{ event [ OR event ... ] } ON <nome_tabela>

{FOR EACH ROW<condição>} BEGIN

<rotina> END;

 Buscando o valor das colunas:

(19)

Triggers

 Exemplo:

CREATE TRIGGER del_dependente BEFORE

DELETE

ON FUNCIONARIO FOR EACH ROW

DELETE FROM dependente WHERE matfunc = :old.matfunc;

 Excluindo uma trigger:

Sintaxe: DROP TRIGGER <nome_trigger>;

(20)

20

Funções

(21)

Funções

 É um rotina armazenada que retorna um valor

 Não podem ser utilizadas para alterar dados em tabelas

 Podem ser chamadas por uma query, por exemplo

Semelhantes a funções internas

Conteúdo semelhante a um procedimento armazenado

(22)

22

Funções

Sintaxe:

CREATE FUNCTION nome

[ (@param 1 tipo1 [=valor_padrao1 RETURNS tipo_retorno

BEGIN

(23)

Funções

Exemplo:

CREATE FUNCTION fn_CustomerNamesInRegion ( @RegionParameter INT )

RETURNS table AS

RETURN (

SELECT *

FROM Sales.Customer

WHERE TerritoryID = @RegionParameter )

(24)

24

Funções

Alterando funções:

ALTER FUNCTION fn_NewRegion <Novo conteúdo de função>

Descartando funções

(25)

Transações

(26)

26

Transações

 Para evitar que ocorram conflitos entre operações concorrentes,

bem como seja possível manter a integridade do banco de dados, é suportado o conceito de transação de banco de dados

 Um transação é um conjunto coeso de operações de banco de

dados.

 “Transação é um programa em execução que forma uma unidade

(27)

Transações

 Transações devem obedecer aos requisitos ACID:

 Atomicidade: os comandos de uma transação devem ser

executados como um todo. Caso algum evento impeça esta

execução, as atualizações de todos os comandos (mesmo os já executados) não devem ser efetivadas. Deve garantir que toda transação iniciada, ou termina com sucesso ou é desfeita.

 Consistência: nenhuma transação pode ter suas atualizações

(28)

28

Transações

 Transações devem obedecer aos requisitos ACID (cont.):

 Independência: a execução de uma transação

concorrentemente a outra não deve causar interferências, ou seja, a execução de uma transação não pode interferir em outras transações executadas concorrentemente.

 Durabilidade: após atingir o final com sucesso, as atualizações

de uma transação devem ser garantidas indefinidamente no

(29)

Transações

A execução de uma transação envolve os seguintes comandos:

– BEGIN TRANSACTION

– COMMIT

(30)

30

Transações

Exemplo: O cliente 123, quer retirar 10.000 de sua conta para fazer um investimento.

BEGIN TRANSACTION UPDATE conta

SET saldo_conta = saldo_conta 10000‐ WHERE cod_cliente = 123

UPDATE investimento

SET saldo_investimento = saldo_investimento + 10000 WHERE cod_cliente = 123

(31)

Transações

 Caso a transação viole alguma restrição de integridade definida ou outra falha qualquer aconteça, suas atualizações serão desfeitas.

Resumindo o que vimos até aqui:

 BEGIN TRANSACTION Inicia uma transação;

 COMMIT

Fecha a transação em curso e torna definitivas as alterações efetuadas sobre o banco de dados durante essa transação; libera todos os locks

ROLLBACK

(32)

32

Transações

 Locks:

 Os mecanismos de locking e de gestão de transações estão

ligados entre si num SGBD relacional

 O sistema de locking é utilizado para sincronizar o acesso

concorrente de vários usuários aos mesmos dados

 Gerenciam a concorrência, ou seja, operações alterando os

(33)

Transações

 Deadlocks:

 Erro que pode acontecer em qualquer sistema de

multiprocessamento ou multi-threading, sendo banco de dados ou não

 Um deadlock ocorre quando duas ou mais operações

(34)

34

Transações

 Deadlocks (cont.):

 Exemplo:

• A transação X adquire um lock de leitura do registro 1.

• A transação Y adquire um lock de leitura do registro 2.

• A transação X solicita um lock de escrita sobre o registo 2 e fica bloqueada até que a transação Y termine e liberte o lock que possui.

(35)

Transações

Deadlocks (cont.):

 Liberando deadlocks:

• O SGBD implementa um mecanismo – Deadlock Monitor – que periodicamente analisa as transações ativas para

detectar travas.

• Quando uma condição de dealock é encontrada, o monitor termina automaticamente com erro em uma das transações de forma que a outra transação possa terminar

normalmente.

(36)

Dúvidas?

Referencias

Documento similar

De momento no hemos matriculado a los alumnos/as porque queremos tener el Aula Moodle bien diseñada y porque estamos haciendo un curso con el CFIE de Aula Moodle y esa y otras

Ai o Tribunal concluiu que o artigo 120°, n° 1, alinea a), do Código Penal, na dimensao normativa que realiza a conversáo da notificacao para a instrucáo preparatoria na

A Constitui9íio portuguesa considera trabalhadores para efeito quer de direitos, liberdades e garantías (arts. 63°, 68°, 70°, 71°) todos aqueles que prestam trabalho subordinado,

deion que pertenecen a cultivos fun- dados a partir de material colectado en la Isla y procedente del continente permitió mos- trar que existe aislamiento reproductivo entre

Hora Fecha.

Polo que respecta especificamente aos traballadores maiores, aínda que non se aprobaron obxectivos cuantificables como se fixera na reunión de Lisboa –na nosa

Além daqueles indicados em notas (a relação entre literatura e espírito na Fe- nomenologia; como essa peça – e a noção de mulher – aparece em outros escri- tos hegelianos, como

Se convoca e integra una ~samblea Nacional Constituyente, la que emitirá la Constitución Política de la República de Guatemala, del a~o 1985. Durante sus sesiones los lideres