使用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))'。 –