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

KIỂM TRA CONSTRAINT trong Oracle SQL

Sử dụng ràng buộc ngoài dòng:

CREATE TABLE Goods_In_Wagon (
  Goods_ID NUMBER(whatever),
  Wagon_ID NUMBER(whatever),
  Total_Weight NUMBER(whatever),
  CONSTRAINT Check_WagID_Weight
    CHECK (Wagon_ID NOT BETWEEN 90 AND 99 OR Total_Weight > 10)
)

Nếu Wagon_ID không giữa 90 và 99, ràng buộc sẽ vượt qua. Nếu nằm trong khoảng từ 90 đến 99, thì Total_Weight phải lớn hơn 10.

Ràng buộc ngoài dòng như thế này cho phép bạn áp dụng logic ràng buộc ở cấp hàng, nghĩa là nó có thể sử dụng bất kỳ giá trị cột nào.

Phụ lục Đây là cách xử lý câu hỏi đã cập nhật với phạm vi Wagon_IDTotal_Weight . Có lẽ có nhiều cách khác nhưng cách này cảm thấy là "sạch sẽ nhất", có nghĩa là nó dễ dàng nhất đối với cá nhân tôi để đọc :)

CREATE TABLE Goods_In_Wagon(
  Goods_ID NUMBER(whatever),
  Wagon_ID NUMBER(whatever),
  Total_Weight NUMBER(whatever),
  CONSTRAINT Check_WagID_Weight
    CHECK (
      (Wagon_ID < 90) OR
      (Wagon_ID BETWEEN 90 AND 99 AND Total_Weight > 10) OR
      (Wagon_ID BETWEEN 100 AND 110 AND Total_Weight > 20) OR
      (Wagon_ID BETWEEN 111 AND 120 AND Total_Weight > 30) OR
      (Wagon_ID > 120)
    )
)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm các bản ghi có phạm vi ngày trùng lặp trong SQL

  2. Điều gì xảy ra với câu lệnh cập nhật của tôi với một phép nối trong Oracle?

  3. Lược đồ mặc định trong URL kết nối Oracle

  4. Kiểm tra xem bảng có tồn tại trong cơ sở dữ liệu hay không - PL SQL

  5. Hàm SOUNDEX () trong Oracle