Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

209
Vistas
¿Cómo puedo almacenar la identificación de incremento automático con una cadena en la secuencia de postgress?

Quiero almacenar la identificación del documento en forma de (IP-01, IP-02, IP-03) en la tabla de secuencias. Traté de usar la función de incremento automático en una cadena, pero mostró un error de que solo puede funcionar en un valor INTEGER.

Quiero almacenarlo de tal forma que pueda almacenar y buscar fácilmente en forma de (IP-0X). Así que por favor alguien me puede ayudar

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Así que te daré una idea básica, la implementación depende de ti. No hay una función predeterminada disponible con la que pueda incrementar automáticamente el valor de la cadena. Es posible que mi solución no sea la forma óptima de hacerlo, pero supongo que resolverá su problema.

Hay 2 opciones, puede implementar alguna lógica para lograr nuestro resultado requerido.

  1. En el nivel de aplicación : -

Al usar la utilidad de count de secuencia, puede contar el número total de columnas y generar la cadena deseada.

 //wherever you are creating the document add following const count = (await Document.count()) + 1; const newId = 'IP-' + count; await Document.create({ id: newId, ... });
  1. En el nivel de base de datos : -

Debe crear una función que devolverá la cadena de identificación en el patrón requerido.

 CREATE OR REPLACE FUNCTION get_id() RETURNS varchar LANGUAGE plpgsql AS $$ BEGIN RETURN (SELECT 'IP-' || (SELECT count(1) from table_name) + 1); END; $$;

Ahora solo necesita establecer el valor predeterminado de su campo de identificación para llamar a la función.

Antes de realizar los cambios a continuación, debe asegurarse de haber creado la función get_id en su base de datos o, de lo contrario, obtendrá un error de función no definida de la base de datos.

 \\add this to file where you define your model id: { type: Sequelize.STRING, defaultValue: Sequelize.fn('get_id') }

Aquí hay una demostración de la solución a nivel de base de datos. ENLACE

EDITAR

Puede usar un enfoque más en lugar de contar la cantidad de columnas que puede mantener una Secuencia en su base de datos y obtener el siguiente valor Integer de eso.

 CREATE SEQUENCE document_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1; -- Then create your get_id function as below: CREATE OR REPLACE FUNCTION get_id() RETURNS varchar LANGUAGE plpgsql AS $$ BEGIN RETURN (SELECT 'IP-' || nextval('document_id_seq')); END; $$;
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda