gpt4 book ai didi

sql - 如何使用 Oracle 声明带有 OR 条件的外键?

转载 作者:行者123 更新时间:2023-12-01 23:45:16 25 4
gpt4 key购买 nike

我有一个表 (A),其主键是表 (B) 或表 (C) 的外键。

create table A (
akey number,
txt varchar2(10)
);

create table B (
bkey number,
txt varchar2(10)
);

create table C (
ckey number,
txt varchar2(10)
);

我想要的是这样的:

alter table A add constraint BorCkey foreign key (akey) references B(bkey)` or C(ckey);

这可能吗?

最佳答案

不,这种事情在 Oracle 中是不可能的。

您的选择通常是

  • 在 A 中创建两个不同的列(bkey 和 ckey),其中 bkey 引用 B.bkey,ckey 引用 C.ckey,并创建一个约束,确保在任何时间点只有一列为非 NULL。
  • 创建某种“组合 B & C”实体,B & C 具有外键,并使 A 中的外键引用该组合实体的键。

如果您想要一个约束来确保任意行中两列中的一列为 NULL,一列为 NOT NULL

create table one_key( 
col1 number,
col2 number,
check( nvl2(col1,1,0) + nvl2(col2,1,0) = 1 )
)

关于sql - 如何使用 Oracle 声明带有 OR 条件的外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4338705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com