Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Batasan Pemeriksaan Oracle

Meskipun saya tidak memiliki Oracle, saya melakukan tes cepat dengan PostgreSQL dan contoh pertama Anda (IS_DISABLED menjadi NULL dan DISABILITY_INCOME_TYPE_ID menjadi 1):

postgres=> select (null is null and 1 is null);
 ?column?
----------
 f
(1 registro)

postgres=> select (null is null and 1 is null) or (null = 0 and 1 is null);
 ?column?
----------
 f
(1 registro)

postgres=> select (null is null and 1 is null) or (null = 0 and 1 is null) or (null = 1);
 ?column?
----------

(1 registro)

Di sini kita melihat dengan jelas bahwa, dalam hal ini, ekspresi Anda (setidaknya pada PostgreSQL) mengembalikan NULL. Dari manual ,

Jadi, jika Oracle berperilaku sama dengan PostgreSQL, batasan pemeriksaan akan lulus .

Untuk melihat apakah ini masalahnya, hindari kejahatan NULL dengan memeriksanya secara eksplisit dan lihat apakah itu berhasil:

CHECK ((IS_DISABLED IS NULL AND DISABILITY_INCOME_TYPE_ID IS NULL)
    OR (IS_DISABLED IS NOT NULL AND IS_DISABLED = 0 AND DISABILITY_INCOME_TYPE_ID IS NULL)
    OR (IS_DISABLED IS NOT NULL AND IS_DISABLED = 1));


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tanggal Pengembalian tidak mendapatkan jam dan menit kembali

  2. Bagaimana cara mendapatkan bidang dari listagg dalam tanda kutip?

  3. Bagaimana Saya Dapat Menghubungkan Flutter (Dart) dengan Oracle Server saya? Sudahkah Seseorang Mencoba ini?

  4. java.sql.SQLException:Pengecualian Io:Mendapat minus satu dari panggilan baca selama koneksi JDBC dengan Oracle

  5. Apex 5.0:Tampilkan bilah kemajuan saat Tindakan Basis Data dilakukan