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