trigger insert, delete, update



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

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


BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Sistemas de Informação

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

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

Bases de Dados 2007/2008. Aula 9

SQL Gatilhos (Triggers)

Transações Seguras em Bancos de Dados (MySQL)

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

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

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

Tarefa Orientada 19 Triggers

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

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

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

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

Projeto de Banco de Dados

Bancos de Dados I. Integridade semântica

PHP INTEGRAÇÃO COM MYSQL PARTE 1

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

RECUPERAÇÃO DE CONTEÚDO BANCO DE DADOS

Integridade dos Dados

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

Tarefa Orientada 15 Manipulação de dados

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

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

Histórico de revisões

Banco de Dados. Prof. Antonio

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Tarefa Orientada 16 Vistas

Iniciar o Data Adapter Configuration Wizard. Toolbox Data Duplo clique em OleDbDataAdapter. Botão next na caixa de diálogo

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

Oracle 10g: SQL e PL/SQL

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados

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

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

Hugo Pedro Proença, 2007

SQL Procedural. Josino Rodrigues Neto

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

A criação de utilizadores no MySQL pode passar pela utilização de dois comandos: - Create user; - Grant;


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

Triggers(Gatilhos) Tiago Alves de Oliveira

Triggers no PostgreSQL

COMPETÊNCIAS ESPECÍFICAS Compreender e utilizar a linguagem SQL, na construção e manutenção de uma base de dados.

Armazenamento organizado facilitando SCRUD; Agiliza processo de desenvolvimento de sistemas;

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

Sistemas de Banco de Dados

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

PHP INTEGRAÇÃO COM MYSQL PARTE 2

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

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

PROGRAMA. Objectivos Gerais :

Programação SQL. Introdução

Tarefa Orientada 18 Procedimentos armazenados

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas.

BANCO DE DADOS: SQL. Edson Anibal de Macedo Reis Batista. 27 de janeiro de 2010

Prof. Carlos Majer Aplicações Corporativas UNICID

Noções de. Microsoft SQL Server. Microsoft SQL Server

Operação de União JOIN

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

Prof. Josenildo Silva

Consistem num conjunto de apontadores para instâncias especificas de cada relação.

Banco de Dados. Maurício Edgar Stivanello

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

CONCORRÊNCIA. Buscando aumentar os níveis de concorrência redução da espera em detrimento do isolamento, a SQL definiu alguns níveis de isolamento.

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

Gabarito - Banco de Dados SQL - 30/07/2013 AULA 01

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

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

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

Controle de transações em SQL

Oracle PL/SQL Overview

PL/pgSQL por Diversão e Lucro

A & F Consultoria em Sistemas e Treinamentos 2014 af.tecnoserv@gmail.com. A linguagem SQL. Autor: Hélio de Almeida Fonte: Wikipédia

Programação com Acesso a Banco de Dados

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

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

Administração de Usuários e Privilégios no Banco de Dados

CIÊNCIA E TECNOLOGIA DO RIO

Os comandos SQL utilizados nas aulas práticas e mostrados aqui foram feitos num interpretador de comandos: psql

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

A linguagem SQL

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

Linguagem de Consulta Estruturada SQL- DML

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Transcrição:

1

Um trigger é um conjunto de instruções SQL armazenadas no catalogo da BD Pertence a um grupo de stored programs do MySQL Executado quando um evento associado com uma tabela acontece: insert, delete, update Corresponde a um tipo especial de procedimento: stored procedure, basicamente um bocado de instruções de programação Executado automaticamente antes o depois dum evento Stored programs include procedimentos e funções 2

Stored programs no MySQL A BD tem objectos definidos em código SQL, armazenadas no servidor para execução posterior: Triggers, diferentes do stored procedure ou stored program: são chamados automaticamente quando um evento acontece numa tabela O stored program deve ser explicitamente chamado: CALL Os procedimentos não devolvem um valor após execução mais podem modificar os seus parâmetros para inspeção As funções são como as funções predefinidas: invocadas numa expressão elas devolvem um valor após evaluação da expressão Existem ainda eventos, tarefas agendadas que o servidor executa Vistas, ou stored queries : tabelas virtuais (já vimos) 3

Vantagens dos triggers Uma maneira alternativa de verificar a integridade dos dados Podem apanhar erros da lógica do negocio na camada da BD (e não na camada dos programas de aplicação que acessam a BD) Uma boa maneira de agendar tarefas programadas Muito úteis para auditar mudanças na BD 4

Desvantagens dos triggers Não se substituem as validações necessárias a fazer nos programas de aplicação: php, javascript, asp.net, Perl Triggers são difíceis para tirar erros. Os processadores de BD não são muito bons neste aspecto Posto que são chamados automaticamente no interior da estrutura da BD, é difícil saber o que esta a acontecer Podem aumentar o tempo de computação no servidor BD Muitos triggers, muito overhead 5

Quando activar os triggers? Antes o depois de instruções de actualização na BD BEFORE INSERT antes AFTER INSERT depois BEFORE UPDATE antes actualização BEFORE DELETE antes de apagar AFTER DELETE após apagar Se utilizarmos instruções na BD que não impliquem INSERT, UPDATE, DELETE, o trigger não é invocado Por exemplo TRUNCATE 6

Triggers devem ter um nome único em toda a BD Armazenados na directoria /data/classicmodels/ com os nomes tabela.trg, e nome_trigger.trn Tabela.TRG mapea a tabela corresponde trigger nome_trigger.trn tem a definição do trigger Os triggers tem todas as opções do stantard SQL, mais tem algumas limitações. 7

Limitações dos triggers Não podem utilizar SHOW, DATA, LOAD TABLE, BACKUP DATABASE, RESTORE, FLUSH e RETURN Podem utilizar COMMIT, ROLLBACK, START TRANSACTION, LOCK/UNLOCK TABLES, ALTER, CREATE, DROP, RENAME Podem utilizar PREPARE, EXECUTE Podem chamar stored procedures ou funções 8

Sintaxe: CREATE TRIGGER nome tempo evento ON tabela FOR EACH ROW BEGIN END 9

O nome do trigger debe seguir a convenção: [nome] [tempo]_[nome tabela]_[evento] Ex: create trigger novosportos_before_portos_update Activação do trigger pode ser BEFORE ou AFTER um evento actua sobre uma tabela O tempo da activação deve ser especificado na definição do trigger Os eventos são: INSERT, UPDATE, DELETE Estos eventos lançam automaticamente a execução do trigger Associados com uma tabela. Se apagar a tabela apaga o trigger Os comandos SQL do trigger colocados entre BEGIN...END Palavras chaves OLD e NEW utilizadas para se referir a um tuplo antes da actualização e o novo tuplo (NEW) após a modificação feita 10

Exemplo: Temos a tabela viatura: matricula, nome, estado Queremos monitorizar manutenções feitas nelas Criamos a tabela auditar_viaturas: matricula, data_modif, descr.. CREATE TRIGGER antes_manut_viatura AFTER UPDATE ON viatura FOR EACH ROW BEGIN INSERT INTO auditar_viaturas SET action = 'insert' Matricula = OLD.matricula data_modif = NOW() descr= NEW.descr END 11

Agora actualizamos viatura: UPDATE viatura SET estado= reparada E vamos verificar a tabela auditar_viaturas: SELECT * FROM auditar_viaturas: Id matricula data_modif descr action 1 34-PO-45 2013-12-02 bla bla update 12

Como vemos o trigger definido: SELECT * FROM Information_Schema.Trigger WHERE Trigger_schema = nome_bd AND Trigger_name = nome_do_trigger; Como ver todos os triggers definidos na BD: SELECT * FROM Information_Schenma.Trigger WHERE Trigger_schema = nome_bd ; E como vemos todos os triggers associados com uma tabela? 13

Para apagar um trigger: DROP TRIGGER nome_tabela.nome_trigger; No nosso exemplo anterior: DROP TRIGGER viatura.antes_manut_viatura; Para modificar um trigger, primeiro devemos apagar :( 14

Procedimentos e funções: È de responsabilidade dos srs alunos ver a sintaxe e a forma de aplicação destas. Muito semelhantes aos procedimentos e funções que conhecemos das linguagens de programação standard. 15

Fim do módulo 16