gpt4 book ai didi

oracle - 两个不同表的SQL外键

转载 作者:行者123 更新时间:2023-12-02 00:42:44 25 4
gpt4 key购买 nike

我有一个问题
表A:
-- 表BCId
表B:
-- 身份证
表C:
-- 编号

我正在寻找一种创建外键表 A 的方法,其中一个条目可以在表 B 或表 C 中

示例条目:
表A:
-- 表BCId: 1
-- 表BCId:2
表B:
-- 编号:1
表C:
-- 编号:2

我想尽可能避免:
- 表 A 中的两列
- 默认值
- 附加表格
- 无法创建基础实体

欢迎任何想法

最佳答案

实现此要求的正常方法是使用 2 列、2 个外键约束和一个检查约束以确保准确填充的列(如果这是一个要求):

create table a
( ...
, b_id references b
, c_id references c
, constraint <name> check ( (b_id is null and c_id is not null)
or (b_id is not null and c_id is null)
)
);

如果对您的 UI 有帮助,您可以在该表上创建一个 View ,将 B_ID 和 C_ID 合并到一个列中。

但是您说过您不想要 2 列,这是为什么呢?

关于oracle - 两个不同表的SQL外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45614085/

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