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

PERIKSA KENDALA di Oracle SQL

Gunakan batasan out-of-line:

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)
)

Jika Wagon_ID adalah tidak antara 90 dan 99, kendala berlalu. Jika antara 90 dan 99, Total_Weight harus lebih besar dari 10.

Batasan out-of-line seperti ini memungkinkan Anda untuk menerapkan logika batasan pada tingkat baris, yang berarti dapat menggunakan salah satu nilai kolom.

Tambahan Berikut cara menangani pertanyaan yang diperbarui dengan rentang Wagon_ID dan Total_Weight . Mungkin ada cara lain tetapi ini terasa seperti "paling bersih", artinya paling mudah bagi saya pribadi untuk membacanya :)

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. Oracle SQL - Bagaimana cara mendapatkan jumlah yang berbeda untuk setiap kolom secara dinamis?

  2. cara menjalankan beberapa kueri Oracle c #

  3. Oracle:Menggabungkan Dua Tabel dengan Kolom Berbeda

  4. ORA-12015:tidak dapat membuat tampilan terwujud dengan cepat dari kueri yang kompleks

  5. Bagaimana cara menghitung jumlah elemen di semua varray Oracle dari tabel?