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

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

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

Triggers em SQLite. Fernando Lobo. Base de Dados, Universidade do Algarve

Sistemas de Informação

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

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 Stored Procedure e Trigger

Bancos de Dados I. Integridade semântica

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

Tarefa Orientada 19 Triggers

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

SQL: Definição de tabelas, Modificações à Base de Dados

trigger insert, delete, update

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

SQL Gatilhos (Triggers)


Banco de Dados Avançados Banco de Dados Ativo

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

PL/pgSQL por Diversão e Lucro

Triggers no PostgreSQL

SQL Procedural. Josino Rodrigues Neto

Integridade dos Dados

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

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


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

Bases de Dados 2007/2008. Aula 9

Centro Universitário Franciscano

RECUPERAÇÃO DE CONTEÚDO BANCO DE DADOS

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

Tarefa Orientada 15 Manipulação de dados

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

Logado no OracleXE vamos acessar a opção:

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

FUNCTION ) RETURNS INTEGER AS $$ DECLARE

Oracle 10g: SQL e PL/SQL

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

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

Regras de Negócios é com o Elefante!

SQL DDL Criando Tabelas e Restrições

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

estiver abaixo ou igual ao mínimo, um novo pedido é acrescentado a uma relação pedidos.

Projeto de Banco de Dados

Programação SQL. Manipulação de Dados. DML Data Manipulation Language

Hugo Pedro Proença, 2007

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

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

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

PHP INTEGRAÇÃO COM MYSQL PARTE 1

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

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

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

A linguagem SQL

Tarefa Orientada 18 Procedimentos armazenados

Programação SQL. Introdução

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

Views. uma view é uma tabela virtual. não existe fisicamente na BD. é definida à custa de outras tabelas ou views. CREATE VIEW <nome> AS <query>;

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

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

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

PROGRAMA. Objectivos Gerais :

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

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

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

Tarefa Orientada 16 Vistas

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

PostgreSQL 8.0. Diogo Biazus

Prova de Fundamentos de Bancos de Dados 2 a Prova

Prova de Fundamentos de Bancos de Dados 2 a Prova

SQL: Interrogações simples

Consultoria e Treinamento em Bancos de Dados Relacionais

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

SQL: Vistas, Indices, Autorização, Restrições

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

Introdução à linguagem SQL

Introdução ao SQL. Aécio Costa

Tipos de dados complexos e objectos Tipos de dados estruturados e herança em SQL Herança de tabelas Matrizes e multi-conjuntos em SQL Identidade de

Segurança de Acesso a Banco de Dados no MS SQL Server

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

Linguagem SQL Sub-linguagem DDL

SQL (Structured Query Language)

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

Administração de Banco de Dados

Bases de Dados 2005/2006. Aula 5

Prova de Fundamentos de Bancos de Dados 2 a Prova

Oracle PL/SQL Overview

Neste artigo, serão apresentados os principais conceitos sobre os TRIGGERS e sua aplicabilidade.

Modelagem de Banco de Dados através do ERwin

Prof. Josenildo Silva

Bases de Dados 2007/2008. Aula 8

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

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

Persistência de Dados

Modelo Cliente/Servidor Por HIARLY ALVES

Transcrição:

Triggers um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre. o evento pode ser INSERT, UPDATE, ou DELETE. o trigger pode ser accionado imediatamente antes (BEFORE) ou imediatamente depois (AFTER) de cada evento. o procedimento pode ser programado numa linguagem qualquer desde que devidamente instalada no servidor do SGBD. no exemplo que se segue, vamos utilizar PL/pgSQL, uma linguagem procedimental muito parecida com a linguagem PL/SQL da Oracle. 1

Exemplo Pretende-se apagar um estúdio se não houver nenhum filme que lhe faça referência. associamos um trigger à tabela de filmes. o trigger será accionado logo após um delete ou um update à tabela de filmes. ao ser disparado, o trigger irá executar um procedimento chamado apaga estudio sem ref() CREATE TRIGGER estudio_sem_ref AFTER DELETE OR UPDATE ON Filmes FOR EACH ROW EXECUTE PROCEDURE apaga_estudio_sem_ref(); 2

Exemplo (cont.) o procedimento verifica se existe algum filme produzido pelo estúdio que acabou de ser apagado (ou actualizado). Em caso negativo, apaga esse estúdio da tabela de estúdios. CREATE FUNCTION apaga_estudio_sem_ref () RETURNS OPAQUE AS DECLARE estudio VARCHAR(40); BEGIN estudio := OLD.nomeEstudio; IF NOT EXISTS (SELECT * FROM Filmes WHERE nomeestudio = estudio) THEN DELETE FROM Estudios WHERE nome = estudio; RAISE NOTICE Estudio % foi apagado., estudio; END IF; RETURN NULL; END; LANGUAGE plpgsql ; 3

Rules (Regras) as rules (regras em português) não fazem parte do SQL standard, mas são implementadas pelo PostgreSQL e dão muito jeito. permitem especificar uma acção alternativa que é executada em selects, inserts, updates, ou deletes. sintaxe: CREATE RULE name AS ON event TO object [WHERE rule_qualification] DO [INSTEAD] [ action (actions) NOTHING ]; 4

Rules (cont.) quando o evento é um insert, update, ou delete, podemos fazer referência a duas pseudo-tabelas, NEW e OLD, que se referem aos novos tuplos (no caso de inserts e updates) e aos velhos tuplos (no caso de deletes e updates). exemplo: a seguinte regra não permite apagar filmes da Disney. CREATE RULE nao_apaga_filmes_disney AS ON DELETE TO Filmes WHERE OLD.nomeEstudio = Disney DO INSTEAD NOTHING; 5

Rules e Views em PostgreSQL, as views são implementadas com rules. em PostgreSQL, as views são read-only, mas podemos simular a escrita em views utilizando rules. exemplo: criar uma regra de modo a podermos inserir tuplos na view filmes disney. CREATE VIEW filmes_disney (nome,ano,realizador) AS SELECT nome, ano, nomerealizador FROM Filmes WHERE nomeestudio = Disney ; 6

Exemplo (cont.) CREATE RULE insere_filmes_disney AS ON INSERT TO filmes_disney DO INSTEAD INSERT INTO Filmes (nome, ano, nomerealizador, nomeestudio) VALUES (NEW.nome, NEW.ano, NEW.realizador, Disney ); Agora já podemos inserir dados na view. INSERT INTO filmes_disney VALUES ( The Huntchback of Notre Dame, 1995, Steven Spielberg ); 7

Outro exemplo inserir dados na view filmes actores CREATE VIEW filmes_actores (filme, ano, estudio, realizador, actor) SELECT F.nome, F.ano, F.nomeEstudio, F.nomeRealizador, P.nomeActor FROM Filmes AS F, Participa AS P WHERE F.nome = P.nomeFilme AND F.ano = P.anoFilme; AS a inserção de um tuplo na view, pode fazer com que tenhamos de inserir tuplos na tabela Filmes, Estudios, Realizadores, Actores e Participa. 8

Outro exemplo (cont.) CREATE RULE insere_em_filmes_actores AS ON INSERT TO filmes_actores DO INSTEAD (INSERT INTO Filmes(nome, ano, nomeestudio, nomerealizador) VALUES (NEW.filme, NEW.ano, NEW.estudio, NEW.realizador); INSERT INTO Actores(nome) VALUES (NEW.actor); INSERT INTO Estudios(nome) VALUES (NEW.estudio); INSERT INTO Realizadores(nome) VALUES (NEW.realizador); INSERT INTO Participa(nomeFilme,anoFilme,nomeActor) VALUES (NEW.filme, NEW.ano, NEW.actor); ); Agora podemos inserir dados na view filmes actores. INSERT INTO filmes_actores VALUES ( Taxi Driver, 1978, Universal, Martin Scorcese, Roxana Arquette ); 9

os inserts podem dar erro porque podem violar restrições que hajam nas tabelas. Por exemplo, se o estúdio Universal já existir na tabela de estúdios, o insert falha porque o nome do estúdio é chave primária. a solução para este problema é criar regras adicionais. Por exemplo: CREATE RULE nao_insere_estudios_duplicados AS ON INSERT TO Estudios WHERE( EXISTS (SELECT * FROM Estudios WHERE nome=new.nome ) ) DO INSTEAD NOTHING; 10

Outro exemplo (cont.) a inserção de dados na view esconde a inserção efectiva dos dados nas tabela base. ao inserir dados na view ficamos impossibilitados de inserir todos os atributos das tabelas base. esses atributos ficam com o valor NULL (ou com o valor que estiver especificado como DEFAULT). podem consultar mais coisas na documentação online (Programmer s Guide Server Programming The Postgres Rule System) 11