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

CONSTRAINT untuk memeriksa nilai dari tabel yang terkait dari jarak jauh (melalui join dll.)

CHECK kendala saat ini tidak dapat mereferensikan tabel lain. Panduan:

Saat ini, CHECK ekspresi tidak boleh berisi subkueri atau merujuk ke variabel selain kolom dari baris saat ini.

Salah satu caranya adalah dengan menggunakan pemicu seperti yang ditunjukkan oleh @Wolph.

Solusi bersih tanpa pemicu :tambahkan kolom yang berlebihan dan sertakan di FOREIGN KEY kendala , yang merupakan pilihan pertama untuk menegakkan integritas referensial. Jawaban terkait di dba.SE dengan instruksi terperinci:

  • Menegakkan batasan "dua meja lagi"

Opsi lainnya adalah "memalsukan" IMMUTABLE fungsi melakukan pemeriksaan dan menggunakannya dalam CHECK paksaan. Postgres akan mengizinkan ini, tetapi waspadai kemungkinan peringatan. Sebaiknya jadikan itu NOT VALID paksaan. Lihat:

  • Nonaktifkan semua batasan dan pemeriksaan tabel saat memulihkan dump


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa urutan catatan dalam tabel dengan kunci primer komposit?

  2. Apa yang Baru di PgBouncer 1.6

  3. Pembagian bilangan bulat mengembalikan 0

  4. LEAST() Fungsi di PostgreSQL

  5. Postgres/JSON - perbarui semua elemen array