1 / 21

Triggers e StoreProcedures Eros Stein Fabricio Bellesa Luiz Borges Mayko Calazans

Triggers e StoreProcedures Eros Stein Fabricio Bellesa Luiz Borges Mayko Calazans. Visão geral. Visão geral. Um dos bancos de dados mais populares do mundo. Quem usa? NASA, Bradesco, HP, Nokia, Sony, U.S. Army, Google, etc...

cybill
Download Presentation

Triggers e StoreProcedures Eros Stein Fabricio Bellesa Luiz Borges Mayko Calazans

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Triggers e StoreProcedures Eros Stein Fabricio Bellesa Luiz Borges Mayko Calazans

  2. Visão geral

  3. Visão geral • Um dos bancos de dados mais populares do mundo. • Quem usa? NASA, Bradesco, HP, Nokia, Sony, U.S. Army, Google, etc... • Em 16/01/2008 a MySQL AB foi comprada pela Sun por 1 bilhão de dólares.

  4. Características

  5. Características • Altíssima portabilidade... Para quase todas as plataformas atuais. • Compatibilidade com varias linguagens de programação tão alta quanto a portabilidade. • Muito estável e de fácil manuseio. • Livre com base na GPL(General Public License) • Suporta triggers, stored procedures e functions. • http://www.mysql.com/

  6. Tabelas

  7. Modelo anterior

  8. Modelo atual

  9. Razões das mudanças • Mudanca 1: • Motivação: • Manter histórico do gasto em cada compra, mesmo com alteração do valor do produto • Saídas: • Adicionamos valorPedido na tabela pedido • Consequencias positivas • Permite descobrir o valor dos produtos vendidos em qualquer época. Depois Antes

  10. Razões das mudanças • Mudança 2 • Motivação: • Ter controle sobre os produtos gastos durante as sessões de tatuagem ou aplicação de bodypiercing. • Saídas: • Criação da tabela produtosUtilizados.

  11. Razões das mudanças • Mudança 3 • Motivação: • Manter registradas as datas de admissão e demissão dos funcionários, e resolver problemas com a re-contratação. • Saídas: • Criação da tabela historicoFuncionario

  12. Triggers • O que é? • Objeto associado a uma tabela; • É sempre disparado para responder algum evento previsto: • Comandos DML (INSERT, REPLACE, DELETE ou UPDATE) • Vários triggers podem ser associados a um mesmo BD. • Os triggers podem ser disparados antes ou depois dos eventos. • Obs.: É importante definir um finalizador diferente de ; em uma trigger.

  13. Triggers CREATE TRIGGER `atualizaProdutosVendidos` AFTER INSERT ON `pedido` FOR EACH ROW BEGIN CALL updateProduto(new.quantidade,new.codProduto); END; CREATE TRIGGER `atualizaProdutosUtilizados` AFTER INSERT ON `produtosutilizados` FOR EACH ROW BEGIN CALL updateProduto(new.quantidade,new.codProduto); END;

  14. Triggers CREATE TRIGGER `atualizaHistorico` AFTER UPDATE ON `funcionario` FOR EACH ROW BEGIN if(old.statuss = 'd')then if(new.statuss = 'a') then INSERT INTO historicoFuncionario SET codHistoricoFuncionario = NULL, codFuncionario = OLD.codFuncionario, dataAdmissao = NOW(), dataDemissao = null; end if; end if; if(old.statuss = 'a') then if(new.statuss = 'd') then call demiteFuncionario(OLD.codFuncionario); end if; end if; END;

  15. Triggers CREATE TRIGGER `adimiteFuncioanario` AFTER INSERT ON `funcionario` FOR EACH ROW BEGIN INSERT INTO historicoFuncionario SET codHistoricoFuncionario = NULL, codFuncionario = new.codFuncionario, dataAdmissao = NOW(), dataDemissao = null; END

  16. Triggers CREATE TRIGGER `atualizaProdutosVendidos` BEFORE INSERT ON `pedido` FOR EACH ROW BEGIN call updateProduto(new.quantidade,new.codProduto); set new.valorPedido = (select p.preco from produto as p where p.codProduto = new.codProduto) * new.quantidade;END

  17. Stored Procedure • O que é? • É um conjunto de comandos SQL que pode ser armazenados no servidor. • Os clientes não precisam reenviar os comandos individuais mas podem fazer referência às stored procedure(SP). • Usando um Trigger... • Podem fornecer um aumento de desempenho: • Já que menos informação é enviada ao servidor, visto que, os SPs ficam no próprio servidor. • Em contra partida, pode gerar lentidão se existirem muitos acessos, já que, SPs favorecem o uso de processos Servidor bound.

  18. Stored Procedure CREATE PROCEDURE `demiteFuncionario`(IN `codFuncioarioEntrada` INT) LANGUAGE SQL NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' BEGIN update historicoFuncionario set dataDemissao = now() where codFuncionario = codFuncioarioEntrada; END

  19. Stored Procedure CREATE PROCEDURE `updateProduto`(IN `var` INT, IN `codP` INT) LANGUAGE SQL NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' BEGIN UPDATE produto SET quantidadeEstoque = quantidadeEstoque - var WHERE codProduto = codP; END;

More Related