Return to Video

vimeo.com/.../271920829

  • 0:05 - 0:05
    Vamos a
  • 0:05 - 0:08
    um outro
    uso muito importante das triggers,
  • 0:08 - 0:11
    que é para uma função nobre
    e tão utilizada
  • 0:11 - 0:16
    por administradores de banco de dados,
    a auditoria do que está acontecendo.
  • 0:16 - 0:20
    Então eu posso criar uma tabela
    que eu chamo de auditoria e registrar
  • 0:20 - 0:24
    quando alguém cadastrou alguma coisa,
    apagou ou removeu, guardando esses dados
  • 0:24 - 0:29
    como backup, por exemplo, ou simplesmente
    podemos saber quem é que apagou. Ok?
  • 0:29 - 0:30
    Quando isso.
  • 0:30 - 0:34
    São informações muito importantes, então
    eu posso utilizar a trigger para isso.
  • 0:34 - 0:35
    Vamos a um exemplo.
  • 0:35 - 0:36
    Eu tenho um exemplo aqui
  • 0:36 - 0:39
    pronto pra gente brincar,
    então vou criar tabela de auditoria.
  • 0:39 - 0:43
    Portanto, agora no início
    essa tabela vai guardar o código
  • 0:43 - 0:47
    a hora que a ação que esta ação aconteceu.
  • 0:47 - 0:49
    Qual é a operação em si?
  • 0:49 - 0:51
    A antiga informação e a nova?
  • 0:51 - 0:55
    Como eu mencionei, eu poderia
    até mesmo guardar o usuário que fez isso,
  • 0:55 - 0:59
    mas eu vou manter então o exemplo
    exatamente como estava ou criar aqui
  • 0:59 - 1:00
    a tabela de auditoria.
  • 1:00 - 1:05
    Muito bem a tabela criada e agora eu vou
  • 1:05 - 1:06
    criar uma procedure.
  • 1:06 - 1:09
    Então na sequência aqui
    eu vou criar uma procedure
  • 1:09 - 1:13
    para dar uma automatizada nessa operação.
  • 1:13 - 1:17
    E com a procedure eu também posso
  • 1:17 - 1:20
    burlar de certa maneira seca, bolar
    a palavra correta,
  • 1:20 - 1:24
    mas eu posso com a procedure
    fazer o commit desse insert.
  • 1:25 - 1:27
    Não posso registrar de fato
    o que está acontecendo,
  • 1:27 - 1:32
    já que a trilha me impede de chamar
    esse tipo de operação dentro do seu corpo.
  • 1:32 - 1:36
    Então vai criar uma procedure
    antes que vai registrar a operação
  • 1:36 - 1:37
    na tabela de auditoria.
  • 1:37 - 1:41
    Então eu tenho aqui um create
    replace proceder registra
  • 1:41 - 1:44
    código operação antigo novo.
  • 1:44 - 1:48
    Tá, eu tenho até um pragma
    autonomos a transaction aqui para que ela
  • 1:48 - 1:52
    para que eu tenha certeza que a seguir vai
    poder executá la com sucesso.
  • 1:52 - 1:53
    E aqui está a operação em si.
  • 1:53 - 1:56
    Insert into auditoria as cinco
  • 1:56 - 1:59
    informações em si, as 4/1
  • 2:00 - 2:04
    quatro delas eu vou passar como parâmetro,
    mas uma delas eu não preciso.
  • 2:04 - 2:06
    Uma delas é a data e hora atuais.
  • 2:06 - 2:09
    E aí eu apelo para o SIS
    Deixa aí para me dar essa informação.
  • 2:09 - 2:12
    Então eu vou criar procedure. Vamos lá.
  • 2:12 - 2:14
    Procedimento criado esse procedimento
  • 2:14 - 2:19
    então vai registrar informação
    e trazer o output para baixo.
  • 2:20 - 2:23
    E agora sim
    eu vou fazer a trigger a trigger.
  • 2:23 - 2:27
    Então um creator replace trigger
    Mudanças salariais
  • 2:27 - 2:33
    vou chamar sempre antes de inserir
    ou atualizar ou mesmo remover informações
  • 2:33 - 2:38
    da tabela de empregados, que é uma tabela
    sensível, tem salários e tudo mais.
  • 2:38 - 2:41
    E para cada linha
    que eu for fazer uma mudança
  • 2:41 - 2:45
    eu vou fazer o seguinte procedimento
    Eu vou, eu vou fazer uma alternância.
  • 2:45 - 2:48
    Então tem um case bem aqui,
    no momento que eu tiver inserindo,
  • 2:48 - 2:51
    então o insert eu vou chamar o Registra.
  • 2:51 - 2:55
    Passando a nova,
    o código do novo funcionário,
  • 2:56 - 2:59
    o qual é a ação que eu quero registrar,
    o insert,
  • 2:59 - 3:02
    a inserção, o antigo salário e o novo.
  • 3:02 - 3:04
    Embora como é um Sporting,
  • 3:04 - 3:06
    eu não tenho o antigo aqui
    que essa informação vai ficar zerada.
  • 3:06 - 3:11
    No final das contas
    o update e a única diferença aqui
  • 3:11 - 3:14
    é que eu vou pegar o código antigo
    como referência aqui
  • 3:14 - 3:17
    e vai ser uma atualização
    e não uma inserção.
  • 3:17 - 3:20
    E no delito
    eu tenho praticamente a mesma linha.
  • 3:20 - 3:23
    A diferença é que
    eu vou registrar que a ação que aconteceu
  • 3:23 - 3:27
    foi uma remoção,
    foi um apagar e aqui eu vou executar.
  • 3:27 - 3:31
    Portanto vou criar
    então essa minha, essa minha trigger.
  • 3:31 - 3:32
    Muito bem,
  • 3:32 - 3:36
    Então eu criei uma trigger
    que a grande lógica por trás da Trigger
  • 3:36 - 3:40
    na verdade é uma possível,
    e ela está sendo chamada aqui no registro,
  • 3:40 - 3:44
    então eu posso, portanto, ter uma trigger
    chamando procedure,
  • 3:44 - 3:45
    não tem problema nenhum.
  • 3:45 - 3:50
    E agora se eu vou fazer um teste,
    então eu tenho o server Output Show,
  • 3:50 - 3:54
    embora nesse exemplo ele se torne
    desnecessário no final das contas
  • 3:54 - 3:58
    eu vou para ter certeza
    alterar o formato da data
  • 3:58 - 4:01
    para um formato mais amigável
    aqui no Brasil.
  • 4:01 - 4:03
    Então isso aqui é
    só para eu poder ter a data e hora
  • 4:03 - 4:05
    no formato mais interessante.
  • 4:05 - 4:06
    Pronto, alterado.
  • 4:06 - 4:10
    E agora eu vou inserir um novo novo
    funcionário, eu estou inserindo aqui,
  • 4:10 - 4:14
    ele vai ser código 1000
    e ele vai ter o salário de 2780.
  • 4:14 - 4:19
    Portanto quando eu clico aqui,
    repare que uma linha foi inserida
  • 4:19 - 4:23
    e além da linha Sinceridade,
    permita me mostrar aqui
  • 4:23 - 4:29
    a tabela de funcionários com esse
    novo funcionário em que no igual a 1000.
  • 4:29 - 4:30
    Então
  • 4:30 - 4:31
    esse cara que eu
  • 4:31 - 4:34
    acabei de inserir também aqui,
  • 4:34 - 4:37
    repare que eu não passei as outras
    informações.
  • 4:37 - 4:40
    Eu só tenho o código e o salário
    no final das contas,
  • 4:40 - 4:43
    que é o que interessa
    para a minha procedure de auditoria.
  • 4:43 - 4:44
    Então vou dar um select aqui.
  • 4:44 - 4:48
    Repare que além da inserção na tabela,
    então de funcionar
  • 4:48 - 4:52
    essa linha que não existia,
    ele também deu insert.
  • 4:52 - 4:56
    Ele disparou insert automático
    na minha tabela de auditoria.
  • 4:56 - 4:57
    Código 1000.
  • 4:57 - 5:01
    Essa data e hora que eu acabei de fazer
    a função insert.
  • 5:01 - 5:06
    O antigo salário não existe
    e o novo salário é 2780.
  • 5:06 - 5:08
    Eu posso fazer um update, portanto eu vou
  • 5:08 - 5:12
    então atualizar o salário
    desse mesmo funcionário.
  • 5:12 - 5:17
    Pronto, minha autorização atualizada
    eu vou olhar
  • 5:17 - 5:20
    agora na tabela de funcionário
    e repare que eu dobrei o salário dele.
  • 5:21 - 5:26
    O salário era de 2180, se tornou 5560,
    agora do mesmo cara número 1000.
  • 5:26 - 5:28
    E agora na tabela de auditoria
  • 5:28 - 5:31
    eu tenho registrado não
    só o momento que eu inserir o funcionário,
  • 5:32 - 5:36
    mas também o momento com data, hora,
    minuto, tudo certinho
  • 5:36 - 5:40
    de quando eu mudei o salário dele,
    quando eu dobrei o salário dele.
  • 5:40 - 5:44
    E pra terminar então a demonstração,
    por que não aproveitar
  • 5:44 - 5:47
    e apagar esse funcionário
    que eu acabei de criar?
  • 5:47 - 5:52
    Então um empinou aqui igual a 1000
  • 5:52 - 5:52
    e vou
  • 5:52 - 5:56
    apagar esse funcionário,
    portanto está apagado
  • 5:56 - 5:59
    e na tabela
    aqui no select asterisco auditoria.
  • 5:59 - 6:03
    Repare que eu tenho
    as três operações registradas o momento,
  • 6:03 - 6:08
    conhecer o funcionário, o momento que eu
    atualizei e o momento que eu o removi.
  • 6:08 - 6:10
    Então eu consigo.
  • 6:10 - 6:13
    Aqui tem informação e aqui no código
    eu consigo saber exatamente quem foi, né?
  • 6:14 - 6:19
    Então sempre essas três operações
    aconteceram pro meu empregado 1000.
  • 6:19 - 6:21
    Então repare como acaba
  • 6:21 - 6:24
    sendo simples
    de criar uma tabela de auditoria
  • 6:24 - 6:29
    e dentro dessa tabela, portanto,
    eu posso guardar qualquer informação
  • 6:29 - 6:33
    para depois fazer algum tipo de acareação
    ou saber se alguém apagou
  • 6:33 - 6:37
    por engano ou não, ou deu
    um aumento de salário que fosse indevido.
  • 6:38 - 6:41
    Eu consigo, portanto, ter uma boa visão
    do que acontece dentro
  • 6:41 - 6:42
    do meu banco de dados.
Title:
vimeo.com/.../271920829
Video Language:
Portuguese, Brazilian
Duration:
06:48

Portuguese, Brazilian subtitles

Revisions Compare revisions