Skip to content

Commit 9f7acc7

Browse files
authored
Create audit_t.sql
1 parent b928a0e commit 9f7acc7

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

audit_t.sql

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
DELIMITER $$
2+
USE `tudbaauditar`$$
3+
CREATE
4+
TRIGGER `tudbaauditar`.`update`
5+
BEFORE UPDATE ON `tudbaauditar`.`tutablaaauditar` #aqui puedes poner antes o despues del update
6+
FOR EACH ROW
7+
BEGIN
8+
/*Paso de variables para un mejor control*/
9+
set @res1 = ''; set @res2 = ''; set @res3 = ''; set @res4 = '';
10+
/*Sacamos info de la ip donde se ejecuta la accion de UPDATE*/
11+
select host as IP INTO @ipcl from information_schema.processlist WHERE ID=connection_id();
12+
#concatenamos los campos de la tabla a auditar y verificamos que no sean null, en caso de que los campos sean null agregamos un espacio
13+
#las variables (new,old)son de mysql, el valor old es el que ya se tenia en la tabla y el new es el valor que se modifico
14+
15+
#Valores viejos
16+
SET @oldq = CONCAT (' id ',ifnull(OLD.id,''),
17+
' campo1 ',ifnull(OLD.campo1,''),
18+
' campo2 ',ifnull(OLD.campo2,''),
19+
' campo3 ',ifnull(OLD.campo3,''));
20+
#Valores nuevos
21+
SET @newq = CONCAT (' id ',ifnull(new.id,''),
22+
' campo1 ',ifnull(new.campo1,''),
23+
' campo2 ',ifnull(new.campo2,''),
24+
' campo3 ',ifnull(new.campo3,''));
25+
#guardamos en una variable los valores que unicamente cambiaron
26+
IF OLD.id <> new.id THEN set @res1 = CONCAT ('Cambio id ',ifnull(OLD.id,''), ' a: ',ifnull(new.id,'')); END IF;
27+
IF OLD.campo1 <> new.campo1 THEN set @res2 = CONCAT ('Cambio campo1 ',ifnull(OLD.campo1,''), ' a: ',ifnull(new.campo1,'')); END IF;
28+
IF OLD.campo2 <> new.campo2 THEN set @res3 = CONCAT ('Cambio campo2 ',ifnull(OLD.campo2,''), ' a: ',ifnull(new.campo2,'')); END IF;
29+
IF OLD.campo3 <> new.campo3 THEN set @res4 = CONCAT ('Cambio campo3 ',ifnull(OLD.campo3,''), ' a: ',ifnull(new.campo3,'')); END IF;
30+
SET @resC=CONCAT(ifnull(@res1,''),'|',ifnull(@res2,''),'|',ifnull(@res3,''),'|',ifnull(@res4,''));
31+
32+
#insertamos en nuestra tabla de log la informacion
33+
INSERT INTO basedeauditoria.tablalogs (old,new,usuario,typo,fecha,tabla,valor_alterado,ip)
34+
VALUES (@oldq ,@newq,CURRENT_USER,"UPDATE",NOW(),"tutablaaauditar",ifnull(@resC,'No cambio nada'),@ipcl);
35+
END$$
36+
37+
#log de insertados(Nuevos registros)
38+
DELIMITER $$
39+
USE `tudbaauditar`$$
40+
CREATE
41+
TRIGGER `tudbaauditar`.`incert`
42+
BEFORE INSERT ON `tudbaauditar`.`tutablaaauditar`
43+
FOR EACH ROW
44+
BEGIN
45+
SET @oldq = '';
46+
SET @newq = CONCAT (' id ',ifnull(new.id,''),
47+
' campo1 ',ifnull(new.campo1,''),
48+
' campo2 ',ifnull(new.campo2,''),
49+
' campo3 ',ifnull(new.campo3,''));
50+
INSERT INTO sys_logdev.logs (old,new,usuario,typo,fecha,tabla)
51+
VALUES (@oldq ,@newq,CURRENT_USER,"INSERT",NOW(),"tutablaaauditar");
52+
END$$
53+
54+
#log de Borrados
55+
DELIMITER $$
56+
USE `tudbaauditar`$$
57+
CREATE
58+
TRIGGER `tudbaauditar`.`delete`
59+
AFTER DELETE ON `tudbaauditar`.`tutablaaauditar`
60+
FOR EACH ROW
61+
BEGIN
62+
SET @newq = '';
63+
SET @oldq = CONCAT (' id ',ifnull(new.id,''),
64+
' campo1 ',ifnull(new.campo1,''),
65+
' campo2 ',ifnull(new.campo2,''),
66+
' campo3 ',ifnull(new.campo3,''));
67+
INSERT INTO sys_logdev.logs (old,new,usuario,typo,fecha,tabla)
68+
VALUES (@oldq ,@newq,CURRENT_USER,"DELETE",NOW(),"tutablaaauditar");
69+
END$$

0 commit comments

Comments
 (0)