PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Apakah ada cara untuk mengatasi semua elemen array JSON saat membuat batasan di PostgreSQL?

Jadi saya menanyakan pertanyaan ini di milis PostgreSQL , sebagai disarankan oleh Craig Ringer , dan saya punya jawabannya.

Singkatnya, solusinya adalah menulis prosedur yang mewujudkan array JSON ke array 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 ;

dan gunakan prosedur itu di CHECK pernyataan:

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

Untuk detail lebih lanjut tentang cara kerjanya, lihat jawaban di Milis PostgreSQL . Penghargaan untuk 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. Kendala unik pada kombinasi dua kolom?

  2. Mengapa PostgreSQL tidak mengembalikan nilai nol ketika kondisinya <> true

  3. Daftar pengguna PostgreSQL

  4. Bagaimana cara membuat pemicu untuk memperbarui kolom di tabel lain?

  5. Cara mengatur TimeStamp dengan Timezone di Laravel 5 Migrate