DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `util`.`log_addWithUser`( vSchema VARCHAR(45), vEntity VARCHAR(45), vChangedModel VARCHAR(45), vOriginFk INT, vChangedModelId INT, vActionCode VARCHAR(45), vOldInstance JSON, vNewInstance JSON, vUserId INT) BEGIN /** * Guarda las acciones realizadas por el usuario * * @param vScheme Esquema al que pertenece la tabla. * @param vEntity Nombre que hace referencia a la tabla donde se insertará el log * @param vChangedModel Nombre que hace referencia a la tabla que se modifica * @param vOriginFk Id del registro de la tabla origen * @param vChangedModelId Id del registro de la tabla a la que se realiza la acción * @param vActionCode Código de la acción {insert | delete | update} * @param vOldInstance JSON que contiene los valores viejos * @param vNewInstance JSON que contiene los valores nuevos * @param vUserId Id del usuario que realiza la acción */ DECLARE vTableName VARCHAR(255) DEFAULT CONCAT(IFNULL(vEntity, ''), 'Log'); SET vSchema = util.quoteIdentifier(vSchema); SET vTableName = util.quoteIdentifier(vTableName); CALL util.log_cleanInstances(vActionCode, vOldInstance, vNewInstance); EXECUTE IMMEDIATE CONCAT( 'INSERT INTO ', vSchema, '.', vTableName, ' SET changedModel = ?, originFk = ?, changedModelId= ?, action = ?, oldInstance = ?, newInstance = ?, userFk = ?' ) USING vChangedModel, vOriginFk, vChangedModelId, vActionCode, vOldInstance, vNewInstance, vUserId; END$$ DELIMITER ;