Trilha de Auditoria

3
BANCO DE DADOS II Trilha de Auditoria Página 1 de 3 Trilha de Auditoria (Log) Com utilização de Triggers Objetivo: Criar uma trilha de auditoria para a tabela “Empregados”, possibilitando rastrear todas as operações de inclusão, alteração e exclusão da tabela. As informações a serem armazenadas são: Data Hora Operação (Inclusão, Alteração ou Exclusão) Tabela Valores anteriores Valores novos Passo 1: Criar a tabela para armazenar as informações TABELA: AUDITORIA Campo Tipo ID_AUDITORIA INT AUTO_INCREMENT PK DT_EVENTO DATETIME ST_TABELA VARCHAR(60) ST_OPERACAO VARCHAR(10) ST_VLR_ANTIGO VARCHAR(1000) ST_VLR_NOVO VARCHAR(1000) Passo 2: Criar as triggers em PL/MySQL Trigger 1: After Insert Criar uma variável para receber os valores a serem inseridos Concatenar os valores de inserção e jogar na variável criada Inserir o registro na tabela auditoria Trigger 2: After Update Criar duas variáveis, uma para valor antigo e outra para o valor novo Concatenar os valores antigos na variável antiga

description

Banco de Dados

Transcript of Trilha de Auditoria

Page 1: Trilha de Auditoria

BANCO DE DADOS II

Trilha de Auditoria

Página 1 de 3

Trilha de Auditoria (Log) Com utilização de Triggers

Objetivo: Criar uma trilha de auditoria para a tabela “Empregados”, possibilitando rastrear todas as operações de inclusão, alteração e exclusão da tabela.

As informações a serem armazenadas são:

Data

Hora

Operação (Inclusão, Alteração ou Exclusão)

Tabela

Valores anteriores

Valores novos Passo 1: Criar a tabela para armazenar as informações TABELA: AUDITORIA

Campo Tipo

ID_AUDITORIA INT AUTO_INCREMENT PK

DT_EVENTO DATETIME

ST_TABELA VARCHAR(60)

ST_OPERACAO VARCHAR(10)

ST_VLR_ANTIGO VARCHAR(1000)

ST_VLR_NOVO VARCHAR(1000)

Passo 2: Criar as triggers em PL/MySQL Trigger 1: After Insert

Criar uma variável para receber os valores a serem inseridos

Concatenar os valores de inserção e jogar na variável criada

Inserir o registro na tabela auditoria Trigger 2: After Update

Criar duas variáveis, uma para valor antigo e outra para o valor novo

Concatenar os valores antigos na variável antiga

Page 2: Trilha de Auditoria

BANCO DE DADOS II

Trilha de Auditoria

Página 2 de 3

Concatenar os valores novos na variável nova Trigger 3: After Delete

Criar uma variável para receber o valor excluído

Concatenar os valores na variável criada

Inserir o registro na tabela de auditoria Comandos PL/MySQL a serem usados:

a) Declaração de variáveis e manipulação de valores DECLARE <variável> <tipo> SET <variável> = <valor>

b) Concatenar valores

CONCAT(Valor1, Valor2, Valor3, ...)

c) Data e hora atual do servidor

NOW() Script completo: CREATE TABLE AUDITORIA

(ID_AUDITORIA INT NOT NULL AUTO_INCREMENT,

DT_EVENTO DATETIME,

ST_TABELA VARCHAR(40),

ST_OPERACAO VARCHAR(15),

ST_VLR_ANTIGO VARCHAR(200),

ST_VLR_NOVO VARCHAR(200),

PRIMARY KEY (ID_AUDITORIA));

DELIMITER $$

CREATE TRIGGER trg_auditoria_emp_aft_ins

AFTER INSERT

ON EMPREGADOS

FOR EACH ROW

BEGIN

DECLARE vlr_novo VARCHAR(200);

SET vlr_novo = CONCAT(NEW.Primeiro_Nome, '/', NEW.Ultimo_Nome, '/', NEW.EMail, '/',

NEW.Telefone, '/', NEW.Salario);

INSERT INTO AUDITORIA (DT_EVENTO, ST_TABELA, ST_OPERACAO, ST_VLR_ANTIGO, ST_VLR_NOVO)

VALUES (Now(), 'Empregados', 'Insert', NULL, vlr_novo);

END$$

DELIMITER ;

DELIMITER $$

CREATE TRIGGER trg_auditoria_emp_aft_upd

AFTER UPDATE

ON EMPREGADOS

FOR EACH ROW

BEGIN

Page 3: Trilha de Auditoria

BANCO DE DADOS II

Trilha de Auditoria

Página 3 de 3

DECLARE vlr_antigo VARCHAR(200);

DECLARE vlr_novo VARCHAR(200);

SET vlr_novo = CONCAT(NEW.Primeiro_Nome, '/', NEW.Ultimo_Nome, '/', NEW.EMail, '/', NEW.

Telefone, '/', NEW.Salario);

SET vlr_antigo = CONCAT(OLD.Primeiro_Nome, '/', OLD.Ultimo_Nome, '/', OLD.EMail, '/', OLD.

Telefone, '/', OLD.Salario);

INSERT INTO AUDITORIA (DT_EVENTO, ST_TABELA, ST_OPERACAO, ST_VLR_ANTIGO, ST_VLR_NOVO)

VALUES (Now(), 'Empregados', 'Update', vlr_antigo, vlr_novo);

END$$

DELIMITER ;

DELIMITER $$

CREATE TRIGGER trg_auditoria_emp_aft_del

AFTER DELETE

ON EMPREGADOS

FOR EACH ROW

BEGIN

DECLARE vlr_antigo VARCHAR(200);

SET vlr_antigo = CONCAT(OLD.Primeiro_Nome, '/', OLD.Ultimo_Nome, '/', OLD.EMail, '/',

OLD.Telefone, '/', OLD.Salario);

INSERT INTO AUDITORIA (DT_EVENTO, ST_TABELA, ST_OPERACAO, ST_VLR_ANTIGO, ST_VLR_NOVO)

VALUES (Now(), 'Empregados', 'Delete', vlr_antigo, NULL);

END$$

DELIMITER ;