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

Ràng buộc Kiểm tra Oracle

Mặc dù tôi không có Oracle, nhưng tôi đã thực hiện một bài kiểm tra nhanh với PostgreSQL và ví dụ đầu tiên của bạn (IS_DISABLEDNULLDISABILITY_INCOME_TYPE_ID là 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)

Ở đây chúng ta thấy rõ ràng rằng, trong trường hợp này, biểu thức của bạn (ít nhất là trên PostgreSQL) trả về NULL. Từ hướng dẫn ,

Vì vậy, nếu Oracle hoạt động giống như PostgreSQL, thì ràng buộc kiểm tra sẽ vượt qua .

Để xem có đúng như vậy không, hãy tránh những trò tai quái NULL bằng cách nhanh chóng kiểm tra nó và xem nó có hoạt động không:

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. Java:Cách chèn CLOB vào cơ sở dữ liệu oracle

  2. Thứ tự tham số thủ tục được lưu trữ trong C # Oracle

  3. Oracle XMLType lớn như thế nào khi được lưu trữ dưới dạng BINARY XML

  4. Hàm ASIN () trong Oracle

  5. ORA-00936:thiếu biểu thức tiên tri