Oracle:约束检查编号范围冲突
有没有办法通过约束检查数字范围的空交点?例如:Oracle:约束检查编号范围冲突,oracle,check-constraints,Oracle,Check Constraints,有没有办法通过约束检查数字范围的空交点?例如: CREATE TABLE "AGE_CATEGORIES" ( "AGE_CATEGORY_ID" CHAR(2 BYTE) NOT NULL PRIMARY KEY, "NAME" NVARCHAR2(32) NOT NULL, "RANGE_FROM" NUMBER(*,0) NOT NULL, "RANGE_TO" NUMBER(*,0) NOT NULL, CONSTRAINT "UK_AGE_CATEGORIES_N
CREATE TABLE "AGE_CATEGORIES" (
"AGE_CATEGORY_ID" CHAR(2 BYTE) NOT NULL PRIMARY KEY,
"NAME" NVARCHAR2(32) NOT NULL,
"RANGE_FROM" NUMBER(*,0) NOT NULL,
"RANGE_TO" NUMBER(*,0) NOT NULL,
CONSTRAINT "UK_AGE_CATEGORIES_NAME" UNIQUE ("NAME"),
CONSTRAINT "CHK_AGE_CATEGORIES_RANGE_COLLISION" CHECK (
???
) ENABLE
);
上述代码中的问号表示类似于:
(SELECT COUNT("AGE_CATEGORY_ID")
FROM "AGE_CATEGORIES" AC
WHERE "RANGE_FROM" < AC."RANGE_TO"
AND "RANGE_TO" > AC."RANGE_FROM") = 0
(选择计数(“年龄\类别\ ID”)
来自“年龄类别”AC
其中“范围从”AC.“范围从”)=0
所以我需要检查new age类别是否与此表中存储的任何其他间隔都没有交集。有可能吗?这是可以做到的,但需要创建带有约束的物化视图-请参阅。然而,这种方法需要仔细考虑,因为它可能会影响性能。实际上,这种逻辑不是通过约束来检查的,只是通过API或触发器中的过程代码来检查的。Ouch,好的,没有必要这样做,我将通过触发器或其他方法来检查;-)。谢谢