MySQL:是否可以为两个不同的表列创建外键?

标签 mysql sql database

我有一个表(a),它应该有一列“user_id”,它是其他表(b)或(c)的外键。 那么它是否指向表b或c(只有一个,而不是两者)。

这在 MySQL 中可能吗?我能想到的最好的事情是以下(但正如你所看到的,我的“a”表中有两次“user_id”,这不是很好,因为这两个值之一将始终为空。

enter image description here

非常感谢!

最佳答案

您好,这称为多态关联,您无法使用 MySql 外键约束来强制执行它。

为了使 userId_a 为空或 user_id_b 为空,您可以创建一个检查约束

CONSTRAINT CHECK (user_id_a IS NOT NULL OR user_id_b IS NOT NULL)

关于MySQL:是否可以为两个不同的表列创建外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39022046/

相关文章:

PHP mysql_fetch_assoc() 错误

java - 如何唯一标识两个结果集是否相等?

mysql - 从内部连接中只获取一行

mysql标签表索引

php - Joomla 2.5 - 通过API进行多数据库查询

sql - 在 Knex 中为表别名

sql - 除了连接 3 个或更多表之外,还有其他选择吗?

database - Postgresql 12.2 在一段时间内占用大量常驻内存

mysql - 查找另一个表中某一列的总值?(使用 join 或其他函数)

sql - 在 spark sql 中用 LIMIT 描述