Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

212
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda