Documentos relacionados
Triggers no PostgreSQL

Bancos de Dados I. Integridade semântica

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

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

Sistemas de Informação

PL/pgSQL por Diversão e Lucro

SQL DDL Criando Tabelas e Restrições

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

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


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

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

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Oracle 10g: SQL e PL/SQL

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

SQL Procedural. Josino Rodrigues Neto

SQL Gatilhos (Triggers)

INE Banco de Dados II. Sumário

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

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

trigger insert, delete, update

Oracle PL/SQL Overview

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

SQL. Ambientes de programação O catálogo do sistema. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

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

Logado no OracleXE vamos acessar a opção:

Banco de Dados Avançados Banco de Dados Ativo

Centro Universitário Franciscano

Integridade dos Dados

Monitoria GDI Aula Prática. DML + PL/SQL parte 1

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

FUNCTION ) RETURNS INTEGER AS $$ DECLARE

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

Execução de Instruções SQL

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

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

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

Linguagem PL/SQL e Triggers

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

António Rocha Nuno Melo e Castro

Regras de Negócios é com o Elefante!

Create Sequence Cria uma sequence. Uma sequence é um objeto que permite vários usuários gerarem valores inteiros sem repetição.

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

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

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

A linguagem SQL

INTRODUÇÃO. No entanto, o que pode ser considerado um produto (resultado) da criação de BDs?

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

FERRAMENTA DE APOIO A REESTRUTURAÇÃO DE CÓDIGO FONTE EM LINGUAGEM PL/SQL BASEADO EM PADRÕES DE LEGIBILIDADE

Principais Comandos SQL Usados no MySql

Prof. Josenildo Silva

PostgreSQL 8.0. Diogo Biazus

BD Oracle. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

Bases de Dados 2007/2008. Aula 9

Consultoria e Treinamento em Bancos de Dados Relacionais

Aula 1 Acesso a Banco de Dados

BD SQL Server. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

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

RECUPERAÇÃO DE CONTEÚDO BANCO DE DADOS

Hugo Pedro Proença, 2007

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Programação Orientada a Objetos (DPADF 0063)

Integrando Java com Banco de Dados

Prof.: Clayton Maciel Costa

PHP INTEGRAÇÃO COM MYSQL PARTE 1

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

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

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br

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

Acesso a Bancos de Dados em Java (JDBC)

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

Programação Orientada a Objetos JDBC Java Database Connectivity

Auditoria de sistemas Deixe que seu banco de dados faça o trabalho por você

Bases de Dados 2007/2008. Aula 8

Restrições de Integridade Semântica

CIÊNCIA E TECNOLOGIA DO RIO

Programação com Acesso a Banco de Dados

UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET. Programação para Internet I

Projeto de Banco de Dados

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

Operação de União JOIN

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

DSS 08/09. Camada de Dados - JDBC. Aula 1. António Nestor Ribeiro /António Ramires Fernandes/ José Creissac Campos {anr,arf,jfc}@di.uminho.

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

JAVA JDBC Java Database Connectivity

Funções Definidas pelo Usuário

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

2. Criar um bloco PL/SQL anônimo para imprimir as tabuadas abaixo: 5 X 10 = 50 5 X 2 = X 10 = X 2 = 2...

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

Python Acessando o Banco de Dados MySQL

Laboratório de Banco de Dados II Aula 1. Stored Procedures

SQL - Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL

Leonardo Gresta Paulino Murta

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

Transcrição:

Triggers e mais... Instituto Militar de Engenharia IME 1o. Semestre/2005 Triggers Propósito mais amplo que restrições Restrições onde se explicita o evento Regras event-condition-action (ECA) Eventos: insert, update e delete Ações podem ocorrer antes, depois ou ao invés do evento Evento não é suficiente para a Ação: A condição, se definida, deve ser respeitada Referência aos valores antigos e novos Para resgate de valores antigos Ou para verificação dos valores novos 1

Triggers CREATE TRIGGER irredutibilidade Evento AFTER UPDATE OF salario ON Empregado REFERENCING OLD AS tuplaantes, NEW AS tupladepois Condição WHEN (tuplaantes.salario > tupladepois.salario) UPDATE Empregado Ação SET salario = tuplaantes.salario WHERE matricula = tuplaantes.matricula FOR EACH ROW Triggers CREATE TRIGGER irredutibilidade AFTER UPDATE OF salario ON Empregado REFERENCING OLD AS tuplaantes, NEW AS tupladepois WHEN (tuplaantes.salario > tupladepois.salario) UPDATE Empregado SET salario = tuplaantes.salario WHERE matricula = tuplaantes.matricula FOR EACH ROW... UPDATE [OF atributo] - a clausula OF é opcional Um trigger pode disparar várias ações OLD AS/NEW AS são desabilitadas para INSERÇÃO/REMOÇÃO, respectivam. FOR EACH ROW define um trigger-de-tupla, e força o trigger a acontecer para cada tupla afetada pelo evento Se omitido, o trigger é chamado trigger-de comando, e acontece uma única vez o comando que disparou o trigger 2

Triggers Regra: a média salarial não pode ser < 20000. Insert, updates ou deletes podem violar esta regra CREATE TRIGGER mantendomediasalarial INSTEAD OF UPDATE OF salario ON Empregado REFERENCING OLD_TABLE AS tabantes, NEW_TABLE AS tabdepois WHEN (20000 >= (SELECT AVG(salario) FROM ( (Empregado EXCEPT tabantes) UNION tabdepois)) DELETE FROM Empregado WHERE matricula IN (SELECT matricula FROM tabantes); INSERT INTO Empregado (SELECT * FROM tabdepois); Triggers no PostgreSQL CREATE FUNCTION emp_stamp() RETURNS trigger AS ' BEGIN -- Check that empname and salary are given IF NEW.empname IS NULL THEN RAISE EXCEPTION ''empname cannot be null''; END IF; IF NEW.salary IS NULL THEN RAISE EXCEPTION ''% cannot have null salary'', NEW.empname; END IF; -- Who works for us when she must pay for it? IF NEW.salary < 0 THEN RAISE EXCEPTION ''% cannot have a negative salary'', NEW.empname; END IF; -- Remember who changed the payroll when NEW.last_date := ''now''; NEW.last_user := current_user; RETURN NEW; END; ' LANGUAGE plpgsql; CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp FOR EACH ROW EXECUTE 2005.1PROCEDURE emp_stamp(); MCRC - IME/RJ 3

Triggers no Oracle 10g CREATE OR REPLACE TRIGGER VERIFICA_SESSAO AFTER INSERT OR UPDATE OF qtd_publico_sessao ON SESSOES FOR EACH ROW BEGIN IF (:new.qtd_publico_sessao < 0) THEN RAISE_APPLICATION_ERROR(-20000, 'Quantidade de público registrado é inválido'); END IF; END; CREATE OR REPLACE TRIGGER ATUALIZA_ATUACAO BEFORE DELETE ON FILMES REFERENCING OLD AS OLDROW FOR EACH ROW BEGIN DELETE FROM ATUACAO WHERE COD_FILME = :OLDROW.COD_FILME; END 2005.1 ; MCRC - IME/RJ Linguagens Necessidade de desenvolvimento aplicações de BD PORTÁVEIS Surgiram opções de programação com SQL SQL embutida ODBC PLSQL 4

SQL Embutida Embute comandos SQL em linguagens hospedeiras: Cobol, Fortran, C, Pascal, etc. Pré-compilador Substituindo por chamadas a rotinas de acesso ao SGBD escritas na linguagem hospedeira. Fornecedores de SGBD Pré-compilador e Bib sql para cada ling hospedeira Bib. SQL BD Linguagem hospedeira +SQL embutido Pré-compilador ling. Hosp + chamadas a funções Compilador Ling.Hosp. Programa SGBD SQL Embutida Uso de cursores para percorrer o resultado O comando SQL só é executado qdo o primeiro open é dado Para manipular os dados de cada tupla resultante usa-se as variáveis mat e nom que no comando SQL aparecem precedidas de : EXEC SQL BEGIN DECLARE SECTION char mat[10], nom[50]; END EXEC END DECLARE SECTION EXEC SQL Declare c cursor for Select matricula, nome From empregado Where salario > 1000 END EXEC... EXEC SQL Open c END EXEC... EXEC SQL Fetch c into :mat, :nom END EXEC 5

SQL Dinâmico Comandos SQL não são conhecidos no momento da compilação Ex.: Interfaces de consulta livre Monta-se uma string com o comando SQL, transforma-se em um comando executável e executa-se EXEC SQL PREPARE v FROM stringvar EXEC SQL EXECUTE v Em menos passos EXEC SQL EXECUTE IMMEDIATE stringvar ODBC Open Database Connectivity API Maioria dos SGBDs oferecem drivers ODBC Camada a mais ODBC Ingres Driver SGBD Postgres Aplicação Protocolo Proprietário API ODBC ODBC Oracle Driver SGBD Oracle BD1 BD2 6

ODBC exemplo file driv='driver={microsoft Access Driver (*.mdb)};... conn = odbc.driverconnect(driv) c = conn.cursor() c.execute ("select * from empregado where nome = 'fred'") #get column names cols= [ i[0] for i in c.description ] print '\n\ncols=',cols rows = c.fetchall() print '\n\n' cnt = 0 for r in rows: cnt += 1 print cnt,' ',r if cnt > 10: break PL SQL Cada SGBD tem a sua Processamentos feitos pelo SGBD manipulação de grandes massas de dados Reuso de funções e procedimentos create procedure calculagrat(cpf in varchar2, grat out real, sorf in out varchar2) as begin declare nasc, contrato date; sal int; cursor c is select dtcontrato, dtnasc, salario from empregado where numcpf = cpf; begin open c; fetch c into contrato, nasc, sal; if meucursor%found then null else sorf = F end if; close cursor... /* calcula vendas do cpf... */ end; end; 7

SGBD via Web CGI Common Gateway Interface podem ser implementados em uma variedade de linguagens: C, C++, PERL, system shell scripts Podem usar Embedded SQL, ODBC, ou outros ESQL para HTML Alguns SGBD s oferecem CGI s genericos que tratam ESQL em HTML Problemas quanto a segurança SGBD via Web D HTTP CLIENT H A B C API CGI F E SGBD G HTTP SERVER 8

SGBD via Web Servidores Web passam a servir aplicações PHP, ASP, JSP, Java servlets, etc... Utilizam APIs para acesso aos SGBDs <html> <?php $db_name = teste ; $db_user = yoko ; $db_pwd = secret ; $connect = odbc_pconnect($dbname,...) $sql = select * from empregado ; echo $sql; $result = odbc_exec($connect.$sql); odbc_result_all($result);?> </html> Exercício Através de buscas na Web selecionar um exemplo de aplicação web que envolva acesso ao postgresql. 9