Buscar

unidade_04_ebook_15

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Grupo SER Educacional | Tecnologias e Linguagens de Banco de Dados 1 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Diretor Executivo 
DAVID LIRA STEPHEN BARROS 
 
Direção Editorial 
ANDRÉA CÉSAR PEDROSA 
 
Projeto Gráfico 
MANUELA CÉSAR DE ARRUDA 
 
Autor 
JOÃO DANILO NOGUEIRA 
 
 
Desenvolvedor 
CAIO BENTO GOMES DOS SANTOS 
 
 
 
 
 
 
 
O Autor 
 
 
João Danilo Nogueira 
 
Olá. Meu nome é João Danilo. Sou graduado em Ciência da 
Computação pela Faculdade Grande Fortaleza (FGF) e amo 
programar. Atualmente, o foco de minha expertise é na área de 
gerenciamento de projetos, teoria dos números, RSA e criptografia. 
Vai ser um prazer enorme ajudar VOCÊ a se tornar um excelente 
desenvolvedor de software ou administrador de banco de dados. 
Conte comigo para lhe ajudar nessa trajetória rumo ao seu 
desenvolvimento profissional! Muito sucesso para você. 
 
 
 
JOÃO DANILO NOGUEIRA 
 
“ 
 
 
Iconográficos 
Olá. Meu nome é Manuela César de Arruda. Sou o responsável pelo 
projeto gráfico de seu material. Esses ícones irão aparecer em sua 
trilha de aprendizagem toda vez que: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
INTRODUÇÃO 
para o início do 
desenvolvimento 
de uma nova 
competência; 
DEFINIÇÃO 
houver necessidade 
de se apresentar um 
novo conceito; 
NOTA 
quando forem 
necessários 
observações ou 
complementações 
para o seu 
conhecimento; 
IMPORTANTE 
as observações 
escritas tiveram 
que ser 
priorizadas para 
você; 
EXPLICANDO 
MELHOR 
algo precisa ser 
melhor explicado 
ou detalhado; 
VOCÊ SABIA? 
curiosidades e 
indagações lúdicas 
sobre o tema em 
estudo, se forem 
necessárias; 
SAIBA MAIS 
textos, referências 
bibliográficas e 
links para 
aprofundamento do 
seu conhecimento; 
REFLITA 
se houver a 
necessidade de chamar 
a atenção sobre algo a 
ser refletido ou 
discutido sobre; 
ACESSE 
se for preciso 
acessar um ou mais 
sites para fazer 
download, assistir 
vídeos, ler textos, 
ouvir podcast; 
 
RESUMINDO 
quando for preciso 
se fazer um resumo 
acumulativo das 
últimas abordagens; 
ATIVIDADES 
quando alguma 
atividade de 
autoaprendizagem 
for aplicada; 
TESTANDO 
quando o 
desenvolvimento de 
uma competência for 
concluído e questões 
forem explicadas; 
 
 
Sumário 
1 TRIGGERS ......................................................................................................... 6 
1.1 Entendendo o conceito ..................................................................................... 7 
1.1.1 Vantagens do uso de triggers ................................................................. 8 
1.1.2 Desvantagens ....................................................................................... 8 
1.2 Triggers em MySQL ........................................................................................... 9 
Considerações Finais ............................................................................................ 16 
Atividades de Autoaprendizagem .......................................................................... 16 
Questionário Avaliativo ........................................................................................ 16 
Bibliografia.......................................................................................................... 17 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 6 
 
 
1 Triggers 
INTRODUÇÃO: 
Os triggers, ou gatilhos em português, são um tipo especial de 
stored procedure. A diferença está no processo que o faz ser 
executado. O procedimento armazenado caracterizado por um 
trigger é disparado sempre que determinada condição for 
satisfeita.Por exemplo, imagine que uma determinada aplicação 
financeira mantém um controle de caixa sobre as vendas efetuadas. 
Sempre que forem registradas ou excluídas vendas, essas 
operações devem ser automaticamente refletidas na tabela de 
caixa, aumentando ou reduzindo o saldo. Neste caso, deve-se criar 
uma trigger associada a uma dessas tabelas, disparada toda vez que 
houver uma inclusão, alteração ou exclusão de linhas na tabela em 
questão. 
 
 
 
 
 
 
 
 
 
 
 
 
 
OBJETIVO: 
Ao término desta aula você será capaz de criar gatilhos para disparar 
procedimentos programados, conhecidos como triggers. 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 7 
 
 
1.1 Entendendo o conceito 
 
Sabemos que a integridade referencial entre tabelas é um dos 
principais fundamentos de todo e qualquer banco de dados 
relacional. É através deste mecanismo que asseguramos as relações 
lógicas entre os dados gravados em diferentes tabelas. Neste 
sentido, há situações em que, ao se verificar uma tentativa de 
violação das regras de integridade referencial de determinada 
tabela, alguns procedimentos precisam ser executados para que, ao 
invés de simplesmente impedir-se a atualização “proibida” da 
referida tabela, outras atualizações em cascata possam ser 
refletidas em outras tabelas, de modo a manter-se em vigor as 
regras de integridade referencial estabelecidas. 
Como estamos falando de um tipo de stored procedure , sabemos 
que esses procedimentos são executados no nível do SGBD, ou seja, 
sem a interferência de programas ou comandos externos em SQL. 
 
 
 
 
 
 
 
 
 
 
 
 
Um trigger sempre estará atrelado a uma tabela, e será executado 
automaticamente, não podendo ser ignorado. Os triggers não 
Triggers (ou gatilhos, em português) são disparadores 
de procedimentos automáticos, condicionados a 
determinadas circunstâncias previsíveis, atuando 
sobre o banco de dados, ao nível do SGBD. 
DEFINIÇÃO 
Um trigger é, portanto, um tipo especial de stored 
procedure executado automaticamente quando há 
uma tentativa de atualização de dados em uma tabela 
protegida por ele. 
EXPLICANDO MELHOR 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 8 
 
 
podem ser executados diretamente, ao contrário dos stored 
procedures, e não podem aceitar parâmetros. 
 
 
 
 
 
 
1.1.1 Vantagens do uso de triggers 
 
Assim como as stored procedures , os triggers apresentam aspectos 
positivos e negativos com relação a sua utilização. 
Como vantagens da utilização dos gatilhos em tabelas, podemos 
apontar a performance, uma vez que parte do processamento que 
seria executado na aplicação passa para a ser responsabilidade do 
SGBD, enxugando os recursos necessários do lado do cliente. 
Além disto, podemos assegurar que o uso de triggers facilita a 
manutenção do banco de dados, pois não é necessário atualizar o 
código fonte da aplicação. 
 
1.1.2 Desvantagens 
 
Da mesma forma que apontamos a segurança como um aspecto 
negativo do uso de stored procedures , reiteramos este fator como 
sendo um ponto de vulnerabilidade do uso de triggers. Em outras 
palavras, qualquer pessoa que tenha acesso ao banco de dados 
poderá visualizar e alterar o código de seus gatilhos. 
Além disto, o uso de triggers exige maior domínio sobre os recursos 
do banco de dados por parte da equipe de programação e de 
administração de dados. 
Um trigger poderá ser revertido pelo uso do comando 
“ROLLBACK”. 
NOTA 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 9 
 
 
 
 
1.2 Triggers em MySQL 
 
Em um banco de dados MySQL, a sintaxe genérica do comando de 
criação de um trigger é a seguinte: 
CREATE TRIGGER <nome> <momento> <evento> 
 ON <tabela> 
 FOR EACH ROW 
 BEGIN 
 /*corpo do código*/ 
 END 
Onde: 
• <nome>: é o nome atribuído ao gatilho, seguindo as mesmas 
normas de nomenclatura dos outros objetos do banco de dados. 
• <momento>: pode ser “BEFORE” (antes) ou “AFTER” (depois), e 
representa quando o gatilho será executado. 
• <evento>: evento que vai disparar o gatilho,podendo ser a 
execução de um comando INSERT, UPDATE, DELETE, além de 
outros comandos não abordados anteriormente, como o LOAD DATA 
e o REPLACE. 
• <tabela>: nome da tabela para a qual o gatilho será executado. 
Um mesmo evento e momento de execução, em uma mesma tabela, 
só poderá ter um gatilho associado. 
Por exemplo, não é possível criar dois gatilhos AFTER INSERT em 
uma mesma tabela. 
Duas cláusulas que você precisa conhecer e entender são as: “NEW” 
e “OLD”. Elas são utilizadas como identificadoras de registros, 
respectivamente: 
• NEW: refere-se ao registro que está sendo incluído em uma 
determinada tabela, devendo ser utilizada antes do nome da coluna 
a qual nos referimos. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 10 
 
 
• OLD: refere-se ao registro que está sendo excluído em uma 
determinada tabela, devendo ser utilizada antes do nome da coluna 
a qual nos referimos. 
Não conseguiu entender? Isso já era esperado. A partir do exemplo 
a seguir, tudo ficará bem mais claro. Para tanto, vamos retomar 
nosso banco de dados exemplo? 
Vamos criar uma coluna chamada “qtdfunc” na tabela 
“departamentos”. A ideia deste campo é que e le contenha sempre a 
quantidade de funcionários lotados em cada departamento 
cadastrado. Assim, teremos três situações (ou eventos) bem 
distintas: 
1. Toda vez que for inserido um novo funcionário na tabela 
“funcionarios”, o campo “qtdfunc” referente ao departamento 
informado para o respectivo funcionário deverá ter seu valor 
incrementado de +1. 
2. Toda vez que um funcionário for excluído da tabela 
“funcionarios”, o campo “qtdfunc” referente ao departamento 
informado para o respectivo funcionário deverá ter seu valor 
subtraído de 1. 
3. Toda vez que o campo “depto” da tabela “funcionarios” for 
alterado, o campo “qtdfunc” deverá ser atualizado nos dois 
departamentos envolvidos na alteração. Por exemplo: se o 
funcionário teve seu departamento trocado de “1” para “2”, na tabela 
“departamentos” deverá acontecer dois procedimentos: o campo 
“qtdfunc” associado ao departamento de código “1” deverá ter seu 
valor diminuído de 1, e o departamento de código “2” deverá ter o 
seu valor incrementado de 1. 
Vamos construir esse gatilho? 
Para isto, abra o PhpMyAdmin e adicione uma coluna à tabela 
“departamentos”, como mostra a figura a seguir. 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 11 
 
 
 
Figura 1 - Adicionando uma coluna à tabela "departamentos" no PhpMyAdmin . 
 
O resultado disto é a exibição de um formulário para se cadastrar a 
nova coluna da tabela. Crie, portanto, o campo “qtdfunc”, conforme 
apresentado na figura a seguir. 
 
Figura 2 - Criando a coluna "qtdfunc" na tabela "departamentos". 
 
Ao clicar em “Save” (salvar), você terá executado o seguinte 
comando DDL: 
ALTER TABLE `departamentos` ADD `qtdfunc` INT(5) NOT 
NULL AFTER `nomedepto`; 
 
Agora que já temos um campo acumulador de funcionários na 
tabela “departamentos”, atualize manualmente o valor deste campo, 
para que ele reflita a quantidade de funcionários em cada 
departamento. O resultado disto poderá ser o exibido na figura 
seguinte: 
 
http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/alter-table.html
http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/alter-table.html
http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/numeric-types.html
http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/logical-operators.html#operator_not
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 12 
 
 
 
Figura 3 - Acumulação dos funcionários por departamento gravada no campo "qtdfunc". 
 
Agora vamos começar a criação dos triggers? Como os eventos 
ocorrem na tabela “funcionarios”, é nela que iremos clicar e, na 
sequência, selecionar a aba “Triggers” no PhpMyAdmin, como 
ilustrado a seguir. 
 
Figura 4 - Aba Triggers no PhpMyAdmin, com a tabela "funcionarios" selecionada. 
 
Ao clicar em “New” (novo), um formulário intitulado “Add Trigger” irá 
aparecer solicitando o preenchimento dos seguintes campos: 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 13 
 
 
 
Figura 5 - Formulário de inserção de Trigger. 
 
• Trigger name: o nome da trigger a ser adicionada à tabela. 
• Table: selecione o nome da tabela. 
• Time: selecione o tempo em que a trigger será executada, se antes 
(BEFORE) ou depois (AFTER) do evento. 
• Event: selecione o comando que reflete o evento disparador da 
trigger. Lembrando que este evento poderá ser a execução de um 
comando “INSERT”, “UPDATE” ou “DELETE”. 
• Definition: digite o código SQL capaz de executar os procedimentos 
desejados para este evento, como no exemplo a seguir: 
BEGIN 
UPDATE departamentos SET `departamentos`.`qtdfunc` = 
`departamentos`.`qtdfunc` + 1 
WHERE `departamentos`.`numdepto` = NEW.`depto`; 
END 
 
Após este preenchimento, clique em “GO” (vá) e confira o resultado: 
CREATE TRIGGER `Add_Func` AFTER INSERT ON 
`funcionarios` FOR EACH ROW BEGIN UPDATE departamentos 
SET `departamentos`.`qtdfunc` = 
http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/create-trigger.html
http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/create-trigger.html
http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/insert.html
http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/update.html
http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/set.html
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 14 
 
 
`departamentos`.`qtdfunc` + 1 WHERE 
`departamentos`.`numdepto` = NEW.`depto`; END 
 
Pronto! Gatilho criado e pronto para ser testado. Para isto, tente 
incluir um novo funcionário na tabela “funcionarios”, lotado no 
departamento de código 2 (Marketing). Para isto, você pode se 
utilizar do seguinte comando: 
INSERT INTO `funcionarios` (`matric`, `nome`, `depto`, 
`salario`, `telefone`) VALUES ('6', 'ZÉLIA BARROSO', 
'2', '13450', '(11)988771122'); 
Será que o campo “qtdfunc” da outra tabela (“departamentos”) teve 
seu valor alterado para +1 para o departamento de código 2 
(Marketing)? 
 
Figura 6 - Acumulação de mais um funcionário no campo "qtdfunc", disparado pelo Trigger. 
Vamos praticar? Agora é com você! Leia atentamente a atividade 
enunciada a seguir para consolidar o seu aprendizado. 
 
 
 
 
 
 
 
Pesquise mais sobre a criação de gatilhos e construa 
as triggers referentes aos outros dois eventos 
possíveis para a tabela “funcionarios”, ou seja, uma 
para o evento DELETE e outra para o UPDATE, ou seja, 
para o caso de haver atualização do departamento do 
funcionário. 
ATIVIDADES 
http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/insert.html
http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html#function_values
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 15 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Para cada trigger, realize um teste e monitore os 
resultados desse teste sobre as tabelas exemplo. 
NOTA 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 16 
 
 
Considerações Finais 
SAIBA MAIS: 
 Quer se aprofundar nos estudos das triggers? Então acesse e 
leia este link de aprofundamento: 
Artigo: “MySQL Básico: Triggers”, acessível pelo link: 
https://www.devmedia.com.br/mysql-basico-triggers/37462(Acesso em 21/12/2017). 
 
 
Atividades de Autoaprendizagem 
ATIVIDADES: 
Pronto para consolidar seus conhecimentos? Leia atentamente o 
enunciado de sua atividade de autoaprendizagem proposta 
para esta aula. Se você está fazendo o seu curso 
presencialmente, é só abrir o seu caderno de atividades. Se você 
estiver cursando na modalidade de EAD (Educação a Distância), 
acesse a sua trilha de aprendizagem no seu ambiente virtual e 
realize a atividade de modo online. Você pode desenvolver esta 
atividade sozinho ou em parceria com seus colegas de turma. 
Dificuldades? Poste suas dúvidas no fórum de discussões em seu 
ambiente virtual de aprendizagem. Concluiu a sua atividade? 
Submeta o resultado em uma postagem diretamente em seu 
ambiente virtual de aprendizagem e boa sorte! 
 
 
Questionário Avaliativo 
TESTANDO: 
Chegou a hora de você provar que aprendeu tudo o que foi 
abordado ao longo desta aula. Para isto, leia e resolva 
atentamente as questões do seu caderno de atividades. Se você 
estiver fazendo este curso a distância, acesse o QUIZ (Banco de 
Questões) em seu ambiente virtual de aprendizagem. 
 
https://www.devmedia.com.br/mysql-basico-triggers/37462
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 17 
 
 
Bibliografia 
 
 
RODRIGUES, J. (21 de Dez de 2017). MySQL Básico: Triggers. DevMedia. Acesso 
em 21 de Dez de 2017, disponível em 
https://www.devmedia.com.br/mysql-basico-triggers/37462 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 18

Continue navegando