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

Documentos relacionados
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

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

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

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

Triggers(Gatilhos) Tiago Alves de Oliveira

Sistemas de Informação

Bancos de Dados I. Integridade semântica

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

Prof. Josenildo Silva

Restrições de Integridade Semântica

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

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

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

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

Subsistema de Integridade Semântica

Subsistema de Integridade Semântica

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

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

Stored Procedures e Triggers

Banco de Dados I Introdução SQL

Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

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

Triggers no PostgreSQL

Linguagem SQL Restrições, Triggers e Views

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

SQL Linguagem de Definição de Dados

PL/pgSQL por Diversão e Lucro

Curso de Ciência da Computação

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

A linguagem SQL

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

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

Administração de Banco de Dados

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

PostgreSQL. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

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

MODELAGEM DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

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

Tarefa Orientada 17 Scripts

Revisão de Bancos de Dados

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

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

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

Tabelas. Banco de Dados I MySQL

Oracle 10g: SQL e PL/SQL

BANCO DE DADOS II SQL Básico. COTEMIG Gerson Borges

Banco de Dados. Professora: Luciana Faria

14/9/2009. Banco de Dados

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

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

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

SQL Gatilhos (Triggers)

Oracle PL/SQL Triggers

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

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

ESTUDO DE CASO EM PL/SQL

Programação SQL. Introdução

GBC043 - Sistemas de Banco de Dados Funções e Gatilhos no PostgreSQL

Sumário. SQL - Criação de Tabelas. Structured Query Language. SQL Versões. André Restivo. October 18, 2010

SQL Básica. Andre Noel

TRIGGER e SEGURANÇA. Prof. Edson Thizon

Banco de Dados Avançados Banco de Dados Ativo


Tratamento de Exceções

TECNOLOGIA EM SISTEMAS PARA INTERNET PROJETO DE BANCO DE DADOS

Relatório. Projecto de Base de Dados Parte 2. Turno: quinta-feira, 11:30 Grupo 25: André Gonçalves Rui Barradas Hélton Miranda 68477

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

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

Definição do esquema da base de dados. o esquema da BD é composto pelas definições de todas as tabelas da BD.

Bases de Dados 2012/2013 Restrições de Integridade em SQL. Helena Galhardas 2012 IST. Bibliografia

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

Banco de Dados. Diego Silveira Costa Nascimento. 20 de março de Instituto Federal do Rio Grande do Norte

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

PL/pgSQL. Introdução. Introdução. Introdução

Bancos (Bases) de Dados

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

Comandos de Manipulação

Linguagem de Consulta Estruturada (SQL)

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

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

Administração de Banco de Dados

Programação em SGDB s

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

BD II (SI 587) Procedimentos Armazenados

Funções Definidas pelo Usuário

Processamento de INDUSTRIA 4.0. Big Data. Aula #8 - Transações e concorrência MARMELADA NO RING, FONTE: ESTADAO EDUARDO CUNHA DE ALMEIDA

GES013 - Sistema de Banco de Dados Funções e Gatilhos no PostgreSQL

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

Aula 12 Revisão. Prof. Filipe Wall Mutz

Linguagens Procedurais no PostgreSQL: Funcoes. Linguagens Procedurais no PostgreSQL: Funcoes

SQL DDL Criando Tabelas e Restrições

SQL. Definição do Esquema da Base de Dados. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

Integridade dos Dados

Oracle Objeto-Relacional. Pablo Vieira Florentino

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

Transcrição:

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

PROCEDIMENTOS TRIGGER STORED PROCEDURE

Regras de Negócio controladas pelo SGBD SGDB Relacional dispoõe de recursos que podem ser u?lizados para controle de regras da aplicação: regras declara?vas verificações: checks integridade referêncial chave estrangeira regras de domínio, obrigatoriedade de atributos regras procedimentais stored procedure trigger

Integridade Referencial create table depto (cod_depto numeric(4), nome_depto varchar(25), Primary Key (cod_depto)); create table emp ( nemp numeric(6), cod_depto numeric(4), Primary Key (nemp), Foreign Key (cod_depto) references depto on delete set null);

Estado das relações depto e emp cod_depto D1 D2 nome_depto Marke?ng Qualidade nemp cod_depto 1 D2 2 D2 3 D1 delete from depto where cod_depto = D1; set null nemp cod_depto 1 D2 2 D2 3 Solange N. Alves de Souza 5

create table emp ( nemp numeric(6), cod_depto numeric(4), Primary Key (nemp), Foreign Key (cod_depto) references depto on delete cascade); cod_depto D1 D2 nome_depto Marke?ng Qualidade nemp cod_depto 1 D2 2 D2 3 D1 delete from depto where cod_depto = D1; nemp cod_depto 1 D2 2 D2 Solange N. Alves de Souza 6

Conclusão Dependendo da forma como a restrição de chave estrangeira for declarada, uma remoção na tabela referenciada poderá: 1. não ser executada, ou 2. implicar em atualizações na(s) tabela(s) que mantém a referência, ou 3. implicar em remoções na(s) tabela(s) que mantém a referência. Inves?gue o que acontece se a declaração fosse: create table emp ( on update set null nemp numeric(6), cod_depto numeric(4), Primary Key (nemp), Foreign Key (cod_depto) references depto on update cascade);

REGRAS PROCEDIMENTAIS

Regras Procedimentais Trigger (gatilho) procedimentos disparados a partir da ocorrência de um evento e que provocará a modificação de uma tabela (insert, delete, update) do BD. Stored Procedure armazenados no banco de dados documentados no dicionário de dados procedimentos armazenados no banco de dados que armazenam regras associadas ao negócio da aplicação. Solange N. Alves de Souza 9

Stored Procedure - continuação sintaxe ambiente Oracle create [or replace] procedure procedure_name (argumento modo tipo_de_dado,...) is begin... end procedure_name; quando necessário executar a procedure: execute procedure_name; argumento: variável passada para a procedure modo:?po do argumento (in, out) Solange N. Alves de Souza 10

Stored Procedure - exemplo introduz somente informação necessária para um novo empregado Elimina entrada desnecessária da rotina de manipulação de dados emp (nemp, nome, função, nger, sal, dataentrada, comissão, ndept) Solange N. Alves de Souza 11

ambiente de chamada exemplo procedure novo_emp João médico 7902 1000 João médico 7902 v_nemp v_emp_nome v_emp_função v_emp_nger v_emp_sal v_emp_dataentrada v_emp_comissão v_emp_ndept Solange N. Alves de Souza 12

continuação CREATE OR REPLACE PROCEDURE novo_emp (v_emp_nome IN emp.nome%type, v_emp_função IN emp.função%type, v_gerente IN emp.nger%type, v_emp_sal IN emp.sal%type) IS v_emp_dataentrada emp.dataentrada%type; v_emp_comissão emp.comissão%type; v_ndept emp.ndept%type; Begin Solange N. Alves de Souza 13

Begin v_emp_dataentrada := SYSDATE; IF v_emp_função = VENDEDOR THEN v_emp_comissão:= 0 ELSE v_emp_comissão : = null; end IF; SELECT ndept /*mesmo depto que o gerente */ INTO v_ndept FROM emp WHERE nemp = v_gerente; continuação INSERT INTO emp VALUES (s_nemp.nextval, v_emp_nome, v_emp_função, v_gerente, v_emp_sal, v_emp_dataentrada, v_emp_comissão, v_ndept); end novo_emp; Solange N. Alves de Souza 14

Stored Procedure - benefícios assegura que ações relacionadas sejam todas efetuadas em conjunto, ou parcialmente segurança / integridade armazenar uma única cópia do código no banco, evitando múl?plas cópias do mesmo código nas várias aplicações (reu?lização). memória modificação uma única vez de uma ro?na, que fica acessível a várias aplicações (reu?lização). elimina testes duplicados quando uma ro?na é modificada. manutenção Solange N. Alves de Souza 15

Trigger para se projetar um trigger é preciso: 1. especificar as condições sob as quais o trigger será disparado. 2. especificar as ações que serão executadas com o disparo do trigger. Solange N. Alves de Souza 16

Ex. aplicação bancária trigger - continuação conta ( número_conta, nome_ag, saldo) depositante (número_conta, nome_cli) empréstimo (número_empr, nome_ag, total) devedor (número_empr, nome_cli) toda vez que uma re?rada em conta acarretar em saldo nega?vo, um emprés?mo é aberto com o valor do saldo nega?vo e o saldo da conta é zerado. o emprés?mo é aberto com o mesmo número da conta e é associado ao mesmo cliente (devedor). a condição do trigger é atualização em conta que resulte em saldo nega?vo as ações que serão efe?vadas com o disparo do trigger serão: Ü inserção de um emprés?mo Ü inserção de um devedor Ü atualização de saldo = 0 em conta. Solange N. Alves de Souza 17

define trigger saldo_negativo after update of conta (if new saldo < 0 then insert into empréstimo values (conta.número_conta, conta.nome_ag, - new conta.saldo); insert into devedor values (select número_conta, nome_cli from depositante where número_conta = conta.número_conta); update conta set saldo = 0 before after update delete insert tabelas where número_conta = empréstimo. número_empr); inserção de um empréstimo inserção de um devedor atualização de saldo = 0 em conta. Solange N. Alves de Souza 18

Triggers no DB2 Sintaxe: create trigger <nome_trigger> <ação> on <nome_tabela> <operação> <ação_triggered> Usado para: Validar dados de entrada; Gerar um valor para uma nova linha inserida; Ler de outra tabela para fazer referência cruzada; Escrever em outra tabela para controle de auditoria. Solange N. Alves de Souza 19

Triggers no DB2 - exemplo Exemplo: Criar um trigger que aumenta o id (EMPID) do empregado cada vez que uma nova pessoa é incluída na tabela EMPLOYEES. EMPLOYEES (EMPID, NAME, DEPT) Trigger: create trigger new_emp after insert on employees for each row update employees set empid = empid + 1 create trigger <nome_trigger> <ação> on <nome_tabela> <operação> <ação_triggered> Solange N. Alves de Souza 20

Triggers no DB2 exemplo continuação q Estado da tabela EMPLOYEES antes da execução da trigger: EMPID NAME DEPT 1 Adam A01 2 John B01 3 Pedro A01 4 Daniel B01 5 Stan B01 9 Bill B01 insert into EMPLOYYES values (10, Steve, B01 ) q Estado da tabela EMPLOYEES depois da execução da trigger: EMPID NAME DEPT 2 Adam A01 3 John B01 4 Pedro A01 5 Daniel B01 6 Stan B01 10 Bill B01 11 Steve B01 O que aconteceu?? 21

Triggers no DB2 exemplo continuação q Os EMPID de todos os empregados foram aumentados de 1, incluindo a linha que foi incluída! q AFTER trigger: após a inclusão da linha (operação INSERT), a ação definida no trigger é executada de acordo com a operação ( for each row ) que foi definida no trigger. q Verifique também o que acontece para os eventos: DELETE E UPDATE! E para os tempos de ativação: BEFORE, AFTER, INSTEAD OF! Solange N. Alves de Souza 22

Triggers no PostgreSql (8.0) Modelo Relacional para o esquemafuncproj trabalha gerencia Solange N. Alves de Souza 23

Representação lógica das tabelas para o esquema FuncProj Funcionarios (matricfunc, nomefunc, cargofunc, salariofunc); Deptos (sigladepto, nomedepto, orcamentoglobaldepto, numerofuncionariosdepto) Projetos (codproj,?tuloproj, orcamento, prazoproj, unidadeprazo, CoordProj, sigladepto) FuncProj (codproj, matricfunc, totalhorasmes) Solange N. Alves de Souza 24

Criação da Trigger Regra: não permite a inclusão ou a modificação de uma linha na tabela funcionários que apresente nome nulo e nem salário nulo ou menor que zero. Solange N. Alves de Souza 25

Função de Trigger no PostGreSQL um trigger sempre está associado a uma função. A função de trigger apresenta retorno do tipo trigger: create or replace function VerificaEmp () returns trigger as $VerificaSalEmp$ Solange N. Alves de Souza 26

-- cria a função de trigger create or replace function VerificaEmp () returns trigger as $VerificaSalEmp$ begin Variável NEW contém a nova linha if new.nomefunc is null or new. nomefunc = criada por um insert ou update. end; then raise exception 'NomeFunc não pode ser nulo'; end if; if new.salariofunc is null or new.salariofunc =< 0 then raise exception 'Salario não pode ser nulo e deve ser maior que zero'; end if; return new; $VerificaSalEmp$ language plpgsql; OLD: variável que contém os valores antigos de uma linha apagada ou atualizada por um delete ou update -- cria a trigger create trigger VerificaSalEmp before insert or update on funcionarios for each row execute procedure VerificaEmp(); 27

Sintaxe de criação de triggers no PostgreSQL CREATE TRIGGER nomedotrigger { BEFORE AFTER } { event [ OR... ] } ON nomedatabela [ FOR [ EACH ] { ROW STATEMENT } ] EXECUTE PROCEDURE nomedafunção ( argumentos ) NomeDoTrigger: define o nome do trigger Before ou A-er: define se o trigger será executado antes ou depois da ação que o disparou (tempo de a?vação do trigger) Evento: indica qual ação (insert, delete ou update) dispara o trigger. O mesmo trigger pode ser disparado por diferentes ações, exemplo: insert or update nomedatabela: indica a tabela a qual o trigger está associado. For each row: indica que o trigger será executado para cada linha alterada pela ação que o disparou (row-level) For each statement: indica que o trigger será executado uma única vez para a ação que o disparou. nomedafunção: função que será executada quando o trigger for disparado. Argumentos: argumentos a serem passados para a função de trigger. Solange N. Alves de Souza 28