Gebruik een out-of-line beperking:
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)
)
Als de Wagon_ID
is niet tussen 90 en 99, de beperking passeert. Als het tussen 90 en 99 ligt, is de Total_Weight
moet groter zijn dan 10.
Met een dergelijke out-of-line beperking kunt u de beperkingslogica op rijniveau toepassen, wat inhoudt dat deze alle kolomwaarden kan gebruiken.
Aanvulling U kunt als volgt omgaan met de bijgewerkte vraag met bereiken van Wagon_ID
en Total_Weight
. Er zijn waarschijnlijk andere manieren, maar dit voelde als de "schoonste", wat betekent dat het voor mij persoonlijk het gemakkelijkst te lezen was :)
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)
)
)