sql >> Databáze >  >> RDS >> PostgreSQL

Existuje způsob, jak vyřešit všechny prvky pole JSON při vytváření omezení v PostgreSQL?

Tak jsem položil tuto otázku na poštovním seznamu Postgresql.com , jako navrhl Craig Ringer , a mám odpověď.

Stručně řečeno, řešením je napsat proceduru, která zhmotní pole JSON do pole PostgreSQL:

create function data_product_ids(JSON) returns integer[] immutable  as $$
select array_agg((a->>'product_id')::integer) from
json_array_elements($1->'products') as a $$ language sql ;

a použijte tento postup v CHECK prohlášení:

alter table orders add check (1 <= ALL(data_product_ids(data)));

Další podrobnosti o tom, jak to funguje, najdete na PostgreSQL mailing list . Poděkování Joelu Hoffmanovi.



  1. literál neodpovídá chybě formátovacího řetězce při aktualizaci tabulky SQL

  2. Ovladač JDBC postgresql nebyl v projektu Android nalezen

  3. PHP / MYSQL Přidat tlačítko do sloupce

  4. Aktualizace SQL, odstranění a vložení současně