Sistemas de Informação e Bases de Dados 2012/2013. Stored Procedures e Triggers

Documentos relacionados
Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos

Sistemas de Informação e Bases de Dados 2012/2013. Restrições de Integridade em SQL

Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos

Ordenação de tuplos order by

Bases de Dados. Junção de relações. Junção de relações

Bases de Dados 2012/2013 Funções/procedimentos e triggers. Helena Galhardas 2012 IST. Bibliografia. Manual referência PostgreSQL

Sistemas de Informação e Bases de Dados 2012/2013. Linguagem SQL

As restrições de integridade garantem a consistência da BD exemplos

Bases de Dados. Restrições de integridade. Restrições de integridade. As restrições de integridade garantem a consistência da BD exemplos

A cláusula order by permite ordenar tuplos exemplo: listar por ordem alfabética os nomes dos clientes com empréstimo na agência de Perryridge

Sistemas de Informação e Bases de Dados 2012/2013. Linguagem SQL

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

Linguagem de Definição de Dados Estrutura básica Operações com conjuntos Funções de agregação Valores nulos Subconsultas embebidas Relações derivadas

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 20. Escola Politécnica da Universidade de São Paulo

Restrições ao Domínio Integridade Referencial Asserções Triggers Segurança e Autorizações

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

Bases de Dados. Álgebra Relacional. Selecção (σ) Seleccionar os registos que satisfazem uma condição exemplo: empréstimos da agência de Perryridge

Álgebra Relacional operações adicionais. Encontrar tuplos que obedecem a uma dada relação questões do tipo: quem já leu todos os livros que eu já li?

Tarefa Orientada 17 Scripts

Bases de Dados. Álgebra Relacional. Selecção (σ) Seleccionar os tuplos que satisfazem uma condição. exemplo: empréstimos da agência de Perryridge

Subsistema de Integridade Semântica

Triggers(Gatilhos) Tiago Alves de Oliveira

Subsistema de Integridade Semântica

f. Exemplo: verificar condição de aprovação de alunos

Bases de Dados. Conversão para Modelo Relacional. Diagrama E-A. IST DEI Bases de Dados

26/04/2017 Triggers no SQL Server: teoria e prática aplicada em uma situação real

Restrições de Integridade Semântica

Bases de Dados. Restrições de integridade. Restrições de integridade. As restrições de integridade garantem a consistência da BD exemplos

Banco de Dados II. PL/SQL - Procedures -Cursor - Funções. Segurança: Introdução; Controle de Acesso; Criptografia; Recursos de SQL.

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

FESURV UNIVERSIDADE DE RIO VERDE FACULDADE DE CIÊNCIA DA COMPUTAÇÃO. Stored Procedures e Triggers

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve

SQL Procedural. Josino Rodrigues Neto

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003

Prof. Josenildo Silva

Avisos. Sumário. Atividade em lab Aula 29. Atividade em lab Aula 29. Programando com SQL Triggers EXERCÍCIO LAB SP. Vista da segunda prova

Curso de Ciência da Computação

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO CURSORS. Profº Erinaldo Sanches Nascimento

Bases de Dados. Conversão para Modelo Relacional. Modelo Entidade-Associação. IST DEI Bases de Dados

Transacções. Vitor Vaz da Silva

Stored Procedures e Triggers

Sistemas de Informação

Bases de Dados 2007/2008. Aula 9

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

Linguagem SQL Restrições, Triggers e Views

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

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.


Funções Definidas pelo Usuário

BD II (SI 587) Procedimentos Armazenados

Bancos de Dados I. Integridade semântica

Sistemas de Informação e Bases de Dados 2012/2013. Índices. Alberto Sardinha

FACULDADE INGÁ Unidade de Ensino Superior Ingá Ltda Ciência da Computação TRIGGERS. Prof. Erinaldo Sanches Nascimento

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

A U L A 1 0 C R I A N D O V I E W S V I E W S ( V I S Õ E S )

BANCO DE DADOS TRIGGERS (GATILHOS) Prof. Fabiano Papaiz IFRN

Oracle Comandos para Processamento de Transações

António Rocha Nuno Melo e Castro

Bases de Dados. Modelo Entidade-Associação. Processo de desenvolvimento. descrição do tema. características do domínio. requisitos funcionais.

WHILE = 0 -- Enquanto não é o fim do cursor, execute.

Banco de Dados II. Triggers e Functions. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL

Bases de Dados. Revisão da matéria. Programa

FUNCTION ) RETURNS INTEGER AS $$ DECLARE

Processo de desenvolvimento. Compreender o domínio interagir com utilizadores e recolher requisitos Desenho conceptual

ACH2025. Laboratóriode Bases de Dados. SQL Oracle Asserçõese gatilhos. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

SQL Gatilhos (Triggers)

Triggers. um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre.

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

Banco de Dados II. PL/SQL Introdução. Segurança: Introdução; Controle de Acesso; Criptografia; Recursos de SQL.

Fundamentos de Programação ORACLE: SQL. Prof. Walter Gima

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve


SQL Pacotes. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados Pacotes

Sumário. Motivação. Aplicações precisam acessar o BD Linguagens BD X Linguagens Programação. paradigmas diferentes (impedance mismatch)

Oracle PL/SQL Overview

Tarefa Orientada 18 Procedimentos armazenados

Exemplos de Gatilhos. Prof. Márcio Bueno

CIÊNCIA E TECNOLOGIA DO RIO

Hugo Pedro Proença, 2007

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL

Material Teórico. Procedures, Functions, Exceptions e Triggers. Responsável pelo Conteúdo: Prof. Ms. Alexander Gobbato Albuquerque

Administração de Banco de Dados

RECUPERAÇÃO DE CONTEÚDO BANCO DE DADOS

Restrições ao Domínio Integridade Referencial Asserções Triggers Segurança e Autorizações


Bases de Dados. Modelo Entidade-Associação. Exemplo do banco. branch. account depositor. loan. borrower customer. IST DEI Bases de Dados

PL/pgSQL por Diversão e Lucro

Transcrição:

Sistemas de Informação e Bases de Dados 2012/2013 Stored Procedures e Triggers Alberto Sardinha

Bibliografia MSDN http://msdn.microsoft.com 1

Funções e Procedimentos SQL suporta funções e procedimentos com ciclos, if-then-else, declaração de variáveis, atribuição de valores a variáveis, etc. 2

Stored Procedures Stored Procedure com um comando SQL create procedure getcustomers as select * from customer go Para chamar a função: exec getcustomers customer_name customer_street customer_city ---------------+-----------------+---------------- Adams Spring Pittsfield Brooks Senator Brooklyn......... (15 rows) 3

Stored Procedure com um parâmetro create procedure getcustomers @customer varchar(255) as select * from customer where customer_name = @customer go Para chamar a função: exec getcustomers @customer = Brooks ou exec getcustomers Brooks customer_name customer_street customer_city ---------------+-----------------+---------------- Brooks Senator Brooklyn (1 row) 4

Stored Procedure com vários parâmetros create procedure getaddress @street varchar(255), @city varchar(255) as select * from customer where customer_street = @street and customer_city = @city go Para chamar a função: exec getcustomers @street = Senator, @city = Brooklyn ou exec getcustomers Senator, Brooklyn customer_name customer_street customer_city ---------------+-----------------+---------------- Brooks Senator Brooklyn (1 row) 5

Elementos Procedimentais Básicos Blocos begin end podem conter múltiplos comandos SQL podem conter declarações de variáveis locais Declaração de variáveis declare <@variable> <type> [= <value>] o âmbito da variável local está restrito ao bloco onde foi declarada 6

Elementos Procedimentais Básicos create procedure getnumaccountsandloans @customer varchar(255) as begin declare @numaccounts int = 0, @numloans int = 0 select @numaccounts = COUNT(account_number) from depositor where customer_name = @customer select @numloans = COUNT(loan_number) from borrower where customer_name = @customer return @numaccounts + @numloans end go 7

Exemplo do banco branch account depositor loan borrower customer IST DEI Bases de Dados

Elementos Procedimentais Básicos Para chamar a função e ver o resultado: DECLARE @return_value int EXEC @return_value = getnumaccountsandloans 'Smith' SELECT 'Return Value' = @return_value GO Return Value --------------- 3 (1 row) 9

Elementos Procedimentais Básicos Condições if condition <statements1> else <statements2> Ciclos while condition <statements> 10

Elementos Procedimentais Básicos create procedure getnumaccountsandloans @customer varchar(255) as begin declare @numaccounts int = 0, @numloans int = 0 select @numaccounts = COUNT(account_number) from depositor where customer_name = @customer select @numloans = COUNT(loan_number) from borrower where customer_name = @customer if(@numaccounts + @numloans = 0) begin print Customer with no accounts return 0 end else return @numaccounts + @numloans end go 11

Triggers Um trigger é uma instrução executada em reação a uma modificação na BD Para especificar um trigger é necessário saber: as condições em que o trigger é disparado as ações a fazer quando o trigger é executado Triggers são um conceito antigo, mas só apareceu na norma SQL:1999 IST DEI Bases de Dados 12

Necessidade dos triggers Cenário: o cliente levanta um quantia superior ao saldo Em vez de resultar num saldo negativo, o banco: cria um empréstimo igual à quantia em falta dá ao empréstimo o mesmo número que a conta coloca o saldo da conta a zero Condição de disparo: um update que resulte em saldo negativo na conta IST DEI Bases de Dados 13

Exemplo Levantamento de 500 da conta A-102 account -100 IST DEI Bases de Dados 14

opções: instead of after (for) Exemplo Trigger create trigger overdraft_trigger on account after update as begin... end go opções: insert update delete nome do trigger tabela na BD que dispara o trigger 15

Exemplo Trigger create trigger overdraft_trigger on account after update as begin declaração de variáveis declare @account varchar(255), @branch varchar(255), @balance numeric(20,2) end go select @account = account_number, @branch = branch_name, @balance = balance from inserted tabela que contem os dados que foram atualizados 16

Exemplo Levantamento de 500 da conta A-102 loan borrower A- 102 Perryridge 100 depositor Hayes account A- 102 0 IST DEI Bases de 2012 Dados IST 17

create trigger overdraft_trigger on account after update as begin declare @account varchar(255), @branch varchar(255), @balance numeric(20,2) select @account = account_number, @branch = branch_name, @balance = balance from inserted if(@balance <0) begin insert into loan values(@account, @branch, -1*@balance) end end go atualização que resulta num saldo negativo 18

Exemplo Levantamento de 500 da conta A-102 loan borrower A- 102 Perryridge 100 depositor Hayes account A- 102 0 IST DEI Bases de 2012 Dados IST 19

create trigger overdraft_trigger on account after update as begin declare @account varchar(255), @branch varchar(255), @balance numeric(20,2) select @account = account_number, @branch = branch_name, @balance = balance from inserted if(@balance <0) begin insert into loan values(@account, @branch, -1*@balance) insert into borrower select customer_name, account_number from depositor as d where d.account_number = @account end end go 20

Exemplo Levantamento de 500 da conta A-102 loan borrower A- 102 Perryridge 100 depositor Hayes account A- 102 0 IST DEI Bases de 2012 Dados IST 21

create trigger overdraft_trigger on account after update as begin declare @account varchar(255), @branch varchar(255), @balance numeric(20,2) select @account = account_number, @branch = branch_name, @balance = balance from inserted if(@balance <0) begin insert into loan values(@account, @branch, -1*@balance) insert into borrower select customer_name, account_number from depositor as d where d.account_number = @account update account set balance = 0 where account_number = @account end end go 22

Testar Trigger trigger dispara somente com comando update tabela na BD que dispara o trigger update account set balance = balance 500 where account_number = 'A- 102' 23

Trigger que Cancela uma Ação create trigger cancel_overdraft on account after update as begin declare @balance numeric(20,2) select @balance = balance from inserted if(@balance <0) begin raiserror('a conta nao tem saldo suficiente',16,1) rollback end end go update account set balance = balance 500 where account_number = 'A-102'; 24

Trigger que Cancela uma Ação create trigger cancel_overdraft2 on account instead of update as begin declare @account varchar(255), @balance numeric(20,2) select @account = account_number, @balance = balance from inserted if(@balance <0) raiserror('a conta nao tem saldo suficiente',16,1) else update account set balance = @balance where account_number = @account end go update account set balance = balance 500 where account_number = 'A-102'; 25

Sumário Triggers e stored procedures em SQL Server 26