42 lines
1005 B
MySQL
42 lines
1005 B
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `util`.`log_clean`()
|
||
|
BEGIN
|
||
|
/**
|
||
|
* Hace limpieza de los datos de las tablas log,
|
||
|
* dejando únicamente los días de retención configurados.
|
||
|
*/
|
||
|
DECLARE vSchemaName VARCHAR(65);
|
||
|
DECLARE vTableName VARCHAR(65);
|
||
|
DECLARE vRetentionDays INT;
|
||
|
DECLARE vDated DATE;
|
||
|
DECLARE vDone BOOL;
|
||
|
|
||
|
DECLARE vQueue CURSOR FOR
|
||
|
SELECT schemaName, tableName, retentionDays
|
||
|
FROM logClean
|
||
|
ORDER BY `order`;
|
||
|
|
||
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||
|
|
||
|
OPEN vQueue;
|
||
|
l: LOOP
|
||
|
SET vDone = FALSE;
|
||
|
FETCH vQueue INTO vSchemaName, vTableName, vRetentionDays;
|
||
|
|
||
|
SET vSchemaName = util.quoteIdentifier(vSchemaName);
|
||
|
SET vTableName = util.quoteIdentifier(vTableName);
|
||
|
SET vDated = VN_CURDATE() - INTERVAL vRetentionDays DAY;
|
||
|
|
||
|
IF vDone THEN
|
||
|
LEAVE l;
|
||
|
END IF;
|
||
|
|
||
|
CALL util.exec(CONCAT(
|
||
|
'DELETE FROM ', vSchemaName , '.', vTableName,
|
||
|
" WHERE creationDate < '", vDated, "'"
|
||
|
));
|
||
|
END LOOP;
|
||
|
CLOSE vQueue;
|
||
|
END$$
|
||
|
DELIMITER ;
|