Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

228
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!