PhpMyAdmin、别名和外键

PhpMyAdmin, aliases and foreign keys

我在互联网上进行了一些搜索,但未能找到答案或解决方案。我想知道是否可以在 PhpMyAdmin 中应用逻辑来防止某些用户出现在另一个 table?

的别名列表中

我有一个“用户”table 和一个“种族”table。在比赛 table 中,我有一个名为“Steward”的列,它是一个引用用户 table 主键的外键(索引)。问题是并不是users table中的所有用户都有成为管家的特权。有没有办法阻止非管家用户出现在比赛中table?

如需进一步支持,请联系我的用户 table:

这是我的比赛 table:

综上所述,我不希望用户table中没有“管家”访问级别的用户出现在种族table的种族“管家”栏中].

大多数开发人员在应用程序代码中处理这种业务规则。也就是说,只需编写代码来检查用户的 access_level,然后再在比赛 table.

中为该用户插入一行

如果你需要一个数据库约束来强制执行,你可以这样做:

  1. (user_id, access_level)
  2. 这对列添加用户 table 的索引
  3. 向始终为 2 的种族 table 添加一个列 access_level。例如,您可以通过定义一个固定为值 2 的存储虚拟列,或使用CHECK 约束。
  4. 在一对列 (race_steward, access_level) 上创建一个外键,引用您在用户 table 中创建的索引。由于access_level必须匹配外键才能满足,而在racestable中该值被强制为2,所以它只能引用作为管家的用户。