mysql - 我可以创建从单个 FK 到多个 PK 的外键约束吗

标签 mysql sql database rdbms

目前,我有两个配置表,它们存储两种不同类型的配置,但是,两者都有一个ID 列。我有一张名为 Deactivation 的表。我想要停用的任何配置都可以将该配置表的 ID 添加到该表中。

数据库结构如下。

enter image description here

我的问题是我可以创建两个引用的 FK 约束吗,

- ID (FK) to T1_ID (PK)
- ID (FK) to T2_ID (PK)

(单子(monad)女到多 parent )

因此,deactivation 表不允许插入任何不在 T1T2 中的 id >。但是如果在任何该表中找到ID,则应该完成插入。

谢谢

最佳答案

我认为您已经从评论中得到了答案,但这里作为直接声明:

关系数据库外键/主键机制并不是为了维护和强制表之间的这种关系。您必须使用停用触发器进行自定义操作,检查插入停用的值是否存在于 T1 或 T2 中,如果存在则允许插入/如果不存在则拒绝插入。

您还必须考虑在 T1 和 T2 中编写一些内容来处理更新/删除(级联它们?)和冲突(如果 T1 id = 1T2 id = 2,但随后将 T2 ID 也更改为 1?如果将 T1 中代表一个事物的 ID 插入到代表另一事物的 T2 中会怎样?T2 中的新事物会自动停用吗?我的手机停止工作是因为有人停止在平板电脑上支付契约(Contract)费用?)

关于mysql - 我可以创建从单个 FK 到多个 PK 的外键约束吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53703245/

相关文章:

mysql - 条件语句中的字符串解释

sql - 在多列中排序

sql - 解决 VB6 中的 ADO 超时问题

带有sql连接器的C++无需请求太多数据即可获取元数据

php - 使用 View 上回显的值查询表,无需再次提交

mysql - 使用sequelize根据express.js中的路由连接mysql数据库

database - 将现有 Kentico 数据库迁移到 Azure SQL - 排序规则不匹配

asp.net - 您如何看待 Postgres 和 Firebird 数据库?

database - Go 中多线程 LevelDB 的合适方法是什么?

java - 如何创建一个通知服务器,在数据库更改时通知 Delphi 应用程序?