使用PL/SQL,我構建了一個包含配置的表格,該表格根據比率定義了樣本分佈到兩個不同的集合中。它有4列:sample_type,set_1,set_2,ratio(樣本去set_1的百分比)。例如,如果一行是('走','左','右',50),這意味着對於類型爲「走路」的樣本,其中50%是「離開」,而其餘的走向「正確」。PL/SQL檢查約束:一列的值取決於另一列
我想添加一個檢查約束條件,它確保只有比例爲100時set_2爲空,即100%的樣本轉到set_1。我嘗試這樣的:
ALTER TABLE CONFIG
ADD CONSTRAINT CHK
CHECK (
NOT EXISTS (SELECT 1 FROM CONFIG WHERE SET_2 IS NULL AND RATIO <> 0)
)
但是,Oracle不允許檢查子查詢。那麼,是否有另一種方法爲這種情況添加檢查約束?
謝謝
這將迫使終端SET_2到爲零並且比率始終爲非零。我需要一個檢查,如果只有比率爲100,那麼允許set_2爲空,即當比率不爲100時,set_2必須不爲空 –
ALTER TABLE CONFIG ADD CONSTRAINT CHECK_SET_2 CHECK((SET_2 IS NULL AND RATIO = 100)OR(SET_2 IS NOT NULL AND RATIO <> 100))'。 –