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

218
Visualizações
restricción no nula dentro de una matriz jsonb en postgres

Cómo no tener una restricción nula dentro de una columna jsonb en Postgres.

Creé una tabla de Postgres con solo una columna llamada id como esta a continuación

 create table tablea ( id jsonb, check ((id->>'test1', id->>'test2') != (null, null)) );

La persona que llama insertará datos en la tabla en el siguiente formato json: -

 [ { "test1":"", "test2":"", "test3":"" }, { "test1":"", "test2":"", "test3":"" } ]

Mi objetivo es que cuando una persona que llama inserte datos en la columna de identificación, quiero que la clave test1 y test2 no sean nulas. ¿Cómo se puede lograr eso? La lógica de creación de mi tabla se explica arriba. Estoy tratando de insertar datos como

 insert into tablea(id) values ('[{"test1":null,"test2":"a","test3":""}]');

Idealmente, esta declaración de inserción debería arrojarme un error, pero está insertando datos en la tabla. Puede alguien ayudarme

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Deberá crear una función que itere a través de su matriz y valide cada elemento de la matriz.

Algo como esto:

 create or replace function validate_json(p_input jsonb) returns boolean as $$ select not exists (select * from jsonb_array_elements(p_input) as t(element) where nullif(element ->> 'test1', '') is null or nullif(element ->> 'test2', '') is null); $$ language sql stable;

Luego puede usarlo para definir una restricción de verificación:

No puede comparar null con = o <> . Necesitas usar IS NOT NULL para eso.

También parece que desea tratar una cadena vacía de la misma manera que nula.

 create table tablea ( id jsonb, constraint check_json check ( validate_json(id) ) );
over 4 years ago · Santiago Trujillo 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