Pular para o conteúdo principal

Auditoria em banco de dados usando triggers.



Um problema seríssimo acontece quanto uma pessoa exclui algo do banco e depois vem alguém querendo que o dado seja restabelecido ou saber quando isso aconteceu.

Um jeito de resolver este problema é usando triggers ou gatilho de banco de dados.

Os passos para usar são os seguintes:

a) Cria-se uma tabela com os mesmos campos da tabela que se deseja controlar, mas sem chave primária. Exemplo: se a tabela é cliente, pode-se criar outra com nome cliente_auditoria

b) Adiciona-se na tabela de auditoria um campo chamado dt_exclusao do tipo DATETIME;

c) Executa a SQL abaixo no banco:

DROP TRIGGER IF EXISTS trg_cliente_exclusao;

CREATE TRIGGER trg_cliente_exclusao

AFTER DELETE ON cliente

FOR EACH ROW

BEGIN

    INSERT INTO cliente_alditoria (dt_exclusao, id_cliente, cliente)

        VALUES (SYSDATE(), old.id_cliente, old.cliente);  

END;

d) Pronto...toda vez que alguém excluir alguém da tabela, automaticamente os dados serão transferidos para a segunda e será gravado o momento em que isso ocorreu.

É isso!

Comentários

Postagens mais visitadas deste blog

Lista de órgãos emissores de RG

Para quem quiser normalizar os órgãos emissores de RG, aí vai uma lista retirada do site da FGV: SSP - Secretaria de Segurança Pública PM - Polícia Militar PC - Policia Civil CNT - Carteira Nacional de Habilitação DIC - Diretoria de Identificação Civil CTPS - Carteira de Trabaho e Previdência Social FGTS - Fundo de Garantia do Tempo de Serviço IFP - Instituto Félix Pacheco IPF - Instituto Pereira Faustino IML - Instituto Médico-Legal MTE - Ministério do Trabalho e Emprego MMA - Ministério da Marinha MAE - Ministério da Aeronáutica MEX - Ministério do Exército POF - Polícia Federal POM - Polícia Militar SES - Carteira de Estrangeiro SJS - Secretaria da Justiça e Segurança SJTS - Secretaria da Justiça do Trabalho e Segurança ZZZ - Outros (inclusive exterior)

Função php que gera número romano

/**  * Funcao que serve para transformar o numero em romano  * @param integer $integer Recebe algum numero inteiro  * @return string Retorna a string do numero romano  */ function fRomano($integer) {     $table = array('M'=>1000, 'CM'=>900, 'D'=>500, 'CD'=>400, 'C'=>100, 'XC'=>90, 'L'=>50, 'XL'=>40, 'X'=>10, 'IX'=>9, 'V'=>5, 'IV'=>4, 'I'=>1);     $return = '';     while($integer > 0) {         foreach($table as $rom=>$arb) {             if($integer >= $arb) {                 $integer -= $arb;                 $return .= $rom;                 break;             }         }     }     return $return; }