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

Kendala unik Postgres tidak menegakkan keunikan

Indeks unik di Postgres didasarkan pada nilai yang sama , tetapi NULL tidak pernah sama dengan apa pun, termasuk NULL lainnya. Oleh karena itu, setiap baris dengan nilai NULL dihapus_at berbeda dari baris lain yang memungkinkan - sehingga Anda dapat memasukkan berapa pun jumlahnya.

Salah satu caranya adalah dengan membuat indeks parsial , menerapkan aturan berbeda ke baris dengan dan tanpa NULL:

 CREATE UNIQUE INDEX ... ON subscriptions
 (user_id, class_type_id) WHERE deleted_at IS NULL;

 CREATE UNIQUE INDEX ... ON subscriptions
 (user_id, class_type_id, deleted_at) WHERE deleted_at IS NOT NULL;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. [Laravel]:SQLSTATE[3F000]:Nama skema tidak valid

  2. Menghitung jarak antara lokasi gps dan nilai geografi postgis menggunakan fungsi?

  3. Mengubah tipe kolom menjadi string yang lebih panjang di Rails

  4. Bagaimana Anda menambahkan Driver PostgreSQL sebagai ketergantungan di Maven?

  5. Hapus duplikat di postgres