PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Có cách nào để giải quyết tất cả các phần tử của mảng JSON khi tạo một ràng buộc trong PostgreSQL không?

Vì vậy, tôi đã hỏi câu hỏi này trên danh sách gửi thư PostgreSQL , như do Craig Ringer đề xuất và tôi đã có câu trả lời.

Tóm lại, giải pháp là viết một thủ tục hiện thực hóa mảng JSON thành mảng 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 ;

và sử dụng quy trình đó trong CHECK trạng thái:

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

Để biết thêm chi tiết về cách hoạt động của điều này, hãy xem câu trả lời trên Danh sách gửi thư PostgreSQL . Tín dụng cho Joel Hoffman.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thiết lập lược đồ trong pg-promise

  2. Cách cấu hình PostgreSQL Sharding với ClusterControl

  3. Làm thế nào để thực thi psql tương tác trong bộ chứa docker của nó?

  4. SQLException:Tập kết quả này đã bị đóng

  5. Tham gia bên trong so với thực hiện mệnh đề where in