我们需要在另一列的基础上添加外键约束。正如您在下面的屏幕截图中看到的,我们有列refer_id
和reference_type
。我们需要根据列refer_id
中包含的值在列reference_type
上添加约束。我们将始终拥有两个数据类型ENUM
的值:Manual
或User
。
如果reference_type
的值为Manual
,我们需要将外键添加到主键列为{{1}的表refer_id
上的reference_detail
列}。如果id
的值为reference_type
,那么我们需要将外键添加到主键为User
的表refer_id
上的users
列。< / p>
请帮助我如何根据这些条件添加约束。
请参阅以下屏幕截图中的表格结构。
答案 0 :(得分:0)
您无法添加条件外键(至少在MySQL中没有)。表上的外键只能引用一个主列,即使你可以(在一些RDBMS中)它也被认为是一种不好的做法。
您可以创建两个子表,它们引用每个父表reference_detail(ENUM:手动)和用户(ENUM:Users)。
它比您的方法更清晰,更容易查询。这是我可以用你所描述的数据库结构做的。
希望这有帮助。