SlideShare uma empresa Scribd logo
1 de 9
Baixar para ler offline
TRIGGERS 
Wagner Bianchi 
Certified MySQL 5.0 Developer 
Certified MySQL 5.0 Database Administrator 
Certified MySQL 5.1 Cluster Database Administrator
Triggers 
! Um TRIGGER ou gatilho é um objeto de banco de dados, associado a uma 
tabela, definido para ser disparado, respondendo a um evento em 
particular; 
! Tais eventos são os comandos da DML (Data Manipulation Language): 
INSERT, REPLACE, DELETE ou UPDATE; 
! Podemos definir inúmeros TRIGGERS em uma base de dados 
baseados diretamente em qual dos comandos acima irá dispará-lo, 
sendo que, para cada um, podemos criar apenas um TRIGGER. 
! Os TRIGGERS poderão ser disparados para trabalharem antes ou 
depois do evento;
Triggers 
! A sintaxe geral de definição de um TRIGGER é a seguinte: 
CREATE [DEFINER = { user | CURRENT_USER }] TRIGGER trigger_name 
trigger_time trigger_event ON tbl_name FOR EACH ROW 
trigger_stmt 
! DEFINER: Quando o TRIGGER for disparado, esta opção será checada 
para checar com quais privilégios este será disparado. Utilizará os 
privilégios do usuário informado em user (´wagner´@´localhost´) ou os 
privilégios do usuário atual (CURRENT_USER). Caso essa sentença seja 
omitida da criação do TRIGGER, o valor padrão desta opção é 
CURRENT_USER(); 
! trigger_name: define o nome do procedimento, por exemplo, trg_test;
Triggers 
! trigger_time: define se o TRIGGER será ativado antes (BEFORE) ou 
depois (AFTER) do comando que o disparou; 
! trigger_event: aqui se define qual será o evento, INSERT, REPLACE, 
DELETE ou UPDATE; 
! tbl_name: nome da tabela onde o TRIGGER ficará "pendurado" aguardando 
o trigger_event; 
! trigger_stmt: as definições do que o o TRIGGER deverá fazer quando for 
disparado.
Triggers 
! No MySQL, diferentemente de outros SGBD’s, não é permitido disparar 
mensagens, por exemplo, “registro atualizado/inserido/excluído com 
sucesso”; 
! TRIGGERS não podem iniciar nem finalizar uma transação; 
! Podem conter mais de um comando em meio à BEGIN/END; 
! Podem facilmente acessar a área temporária do SGBD para se trabalhar 
com o valor de “antes” e “depois”; 
! Para cada tabela de um banco de dados, podemos ter no máximo 6 
TRIGGERS; 
! Os TRIGGERS ficam armazenados na tabela TRIGGERS, dentro do 
dicionário de dados;
Triggers 
! TRIGGERS são mais efetivos que restrições check; 
! Podem atuar em uma tabela com base em outra tabela de qualquer banco 
de dados dentro do MySQL;
Triggers 
! Eventos de um TRIGGER: 
– BEFORE: dispara o TRIGGER antes dos dados chegarem à tabela; 
– AFTER: dispara o TRIGGER após a atualização dos dados em uma 
tabela; 
mysql> create trigger trg_country_up 
-> after update 
-> on Country 
-> for each row 
-> begin 
-> set @var_old = OLD.Name; 
-> set @var_new = NEW.Name; 
-> end; 
-> // 
Query OK, 0 rows affected (0.00 sec)
Triggers 
! OLD e NEW 
– OLD: operador para ser utilizado no interior da TRIGGER para 
recuperar o valor anterior à um UPDATE, *REPLACE ou DELETE; 
– NEW: operador para ser utilizado no interior da TRIGGER para 
recuperar dados atuais a partir de comandos INSERT, *REPLACE e 
UPDATE.
Exercício 
! Artigo: MySQL - TRIGGERS 
! Com base no assunto apresentando “Triggers”, responda a 
LISTA 10. 
! Fonte de referência: http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

Mais conteúdo relacionado

Mais procurados

Aula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação WebAula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
Dalton Martins
 

Mais procurados (20)

Modulos SNEP
Modulos SNEPModulos SNEP
Modulos SNEP
 
Snep arquitetura
Snep arquiteturaSnep arquitetura
Snep arquitetura
 
Stored procedure
Stored procedureStored procedure
Stored procedure
 
Apache Struts
Apache StrutsApache Struts
Apache Struts
 
Aula10 sql-ddl
Aula10 sql-ddlAula10 sql-ddl
Aula10 sql-ddl
 
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
 
Stored procedure
Stored procedureStored procedure
Stored procedure
 
Net Coders Ladies SQL
Net Coders Ladies SQL Net Coders Ladies SQL
Net Coders Ladies SQL
 
Aprofundamento de DDL e DML
Aprofundamento de DDL e DMLAprofundamento de DDL e DML
Aprofundamento de DDL e DML
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos Comandos
 
UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6
 
Curso de Certificação Linux LPI - Terminal Root
Curso de Certificação Linux LPI - Terminal RootCurso de Certificação Linux LPI - Terminal Root
Curso de Certificação Linux LPI - Terminal Root
 
T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012
 
Consultas SQL
Consultas SQLConsultas SQL
Consultas SQL
 
Comandos DDL para o MySQL
Comandos DDL para o MySQLComandos DDL para o MySQL
Comandos DDL para o MySQL
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQL
 
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação WebAula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
 
Aula05 android persistencia
Aula05 android persistenciaAula05 android persistencia
Aula05 android persistencia
 
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
 
Fazendo Um Elefante Passar Debaixo da Porta - FISL
Fazendo Um Elefante Passar Debaixo da Porta - FISLFazendo Um Elefante Passar Debaixo da Porta - FISL
Fazendo Um Elefante Passar Debaixo da Porta - FISL
 

Semelhante a UNIFAL - MySQL Triggers - 5.0/5.6 (8)

Triggers
TriggersTriggers
Triggers
 
Introdução ao BD Postgre
Introdução ao BD PostgreIntrodução ao BD Postgre
Introdução ao BD Postgre
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Postgre sql
Postgre sqlPostgre sql
Postgre sql
 
Aula09 - PL SQL - Subprogramas.pptx
Aula09 - PL SQL - Subprogramas.pptxAula09 - PL SQL - Subprogramas.pptx
Aula09 - PL SQL - Subprogramas.pptx
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 
Db2
Db2Db2
Db2
 
ORACLE ADVANCED SECURITY
ORACLE ADVANCED SECURITYORACLE ADVANCED SECURITY
ORACLE ADVANCED SECURITY
 

Mais de Wagner Bianchi

MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016
Wagner Bianchi
 
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQLInnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
Wagner Bianchi
 

Mais de Wagner Bianchi (20)

Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18
 
Maxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoinMaxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoin
 
Meetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de UsoMeetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de Uso
 
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
 
NY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with MaxscaleNY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with Maxscale
 
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source ReplicationWebinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
 
MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016
 
MySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source ReplicationMySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source Replication
 
UNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - ReplicaçãoUNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - Replicação
 
UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6
 
UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6
 
UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6
 
UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6
 
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
 
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
 
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
 
Introdução ao MySQL 5.6
Introdução ao MySQL 5.6Introdução ao MySQL 5.6
Introdução ao MySQL 5.6
 
Mysql for IBMers
Mysql for IBMersMysql for IBMers
Mysql for IBMers
 
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQLInnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
 
MySQL Cluster Product Overview
MySQL Cluster Product OverviewMySQL Cluster Product Overview
MySQL Cluster Product Overview
 

Último

Último (8)

Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

UNIFAL - MySQL Triggers - 5.0/5.6

  • 1. TRIGGERS Wagner Bianchi Certified MySQL 5.0 Developer Certified MySQL 5.0 Database Administrator Certified MySQL 5.1 Cluster Database Administrator
  • 2. Triggers ! Um TRIGGER ou gatilho é um objeto de banco de dados, associado a uma tabela, definido para ser disparado, respondendo a um evento em particular; ! Tais eventos são os comandos da DML (Data Manipulation Language): INSERT, REPLACE, DELETE ou UPDATE; ! Podemos definir inúmeros TRIGGERS em uma base de dados baseados diretamente em qual dos comandos acima irá dispará-lo, sendo que, para cada um, podemos criar apenas um TRIGGER. ! Os TRIGGERS poderão ser disparados para trabalharem antes ou depois do evento;
  • 3. Triggers ! A sintaxe geral de definição de um TRIGGER é a seguinte: CREATE [DEFINER = { user | CURRENT_USER }] TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt ! DEFINER: Quando o TRIGGER for disparado, esta opção será checada para checar com quais privilégios este será disparado. Utilizará os privilégios do usuário informado em user (´wagner´@´localhost´) ou os privilégios do usuário atual (CURRENT_USER). Caso essa sentença seja omitida da criação do TRIGGER, o valor padrão desta opção é CURRENT_USER(); ! trigger_name: define o nome do procedimento, por exemplo, trg_test;
  • 4. Triggers ! trigger_time: define se o TRIGGER será ativado antes (BEFORE) ou depois (AFTER) do comando que o disparou; ! trigger_event: aqui se define qual será o evento, INSERT, REPLACE, DELETE ou UPDATE; ! tbl_name: nome da tabela onde o TRIGGER ficará "pendurado" aguardando o trigger_event; ! trigger_stmt: as definições do que o o TRIGGER deverá fazer quando for disparado.
  • 5. Triggers ! No MySQL, diferentemente de outros SGBD’s, não é permitido disparar mensagens, por exemplo, “registro atualizado/inserido/excluído com sucesso”; ! TRIGGERS não podem iniciar nem finalizar uma transação; ! Podem conter mais de um comando em meio à BEGIN/END; ! Podem facilmente acessar a área temporária do SGBD para se trabalhar com o valor de “antes” e “depois”; ! Para cada tabela de um banco de dados, podemos ter no máximo 6 TRIGGERS; ! Os TRIGGERS ficam armazenados na tabela TRIGGERS, dentro do dicionário de dados;
  • 6. Triggers ! TRIGGERS são mais efetivos que restrições check; ! Podem atuar em uma tabela com base em outra tabela de qualquer banco de dados dentro do MySQL;
  • 7. Triggers ! Eventos de um TRIGGER: – BEFORE: dispara o TRIGGER antes dos dados chegarem à tabela; – AFTER: dispara o TRIGGER após a atualização dos dados em uma tabela; mysql> create trigger trg_country_up -> after update -> on Country -> for each row -> begin -> set @var_old = OLD.Name; -> set @var_new = NEW.Name; -> end; -> // Query OK, 0 rows affected (0.00 sec)
  • 8. Triggers ! OLD e NEW – OLD: operador para ser utilizado no interior da TRIGGER para recuperar o valor anterior à um UPDATE, *REPLACE ou DELETE; – NEW: operador para ser utilizado no interior da TRIGGER para recuperar dados atuais a partir de comandos INSERT, *REPLACE e UPDATE.
  • 9. Exercício ! Artigo: MySQL - TRIGGERS ! Com base no assunto apresentando “Triggers”, responda a LISTA 10. ! Fonte de referência: http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html