jueves, 28 de noviembre de 2019

Crear ID Dinamicos con POSTGRESQL

CREATE OR REPLACE FUNCTION GeneraID() RETURNS VARCHAR AS $$
DECLARE numFechaActual VARCHAR(100);
DECLARE strEnc CHAR(32);
DECLARE contador INT DEFAULT 0;
DECLARE genID VARCHAR DEFAULT '';
DECLARE contRest INT DEFAULT 1;
DECLARE incVar INT DEFAULT 1;
BEGIN
numFechaActual := REPLACE(CONCAT(TO_CHAR(NOW(), 'YYYYMMDDHHIISS'), EXTRACT(EPOCH FROM (SELECT NOW())) * 1000),'.','');
strEnc := MD5(numFechaActual);
genID := SUBSTRING(strEnc, 1, 8);
FOR contador IN 1.. LENGTH(strEnc) LOOP
IF (contRest = 8)
THEN
IF (contador IN (8,16,24))
THEN
IF (contador > 0)
THEN
incVar := contador + 1;
ELSE
incVar := contador;
END IF;
genID := CONCAT(genID, '-',SUBSTRING(strEnc, incVar, contRest));
END IF;
contRest := 1;
ELSE
contRest := contRest + 1;
END IF;
END LOOP;
return genID;
END;
$$
LANGUAGE plpgsql;