微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

也会检查其他键的外键约束

如何解决也会检查其他键的外键约束

我正在将MysqL用于多用户站点。我管理用户的方式是在每个表中都有一个UserId列,因此无论何时用户登录,我都可以通过存储用户来假装存在的唯一数据就是属于当前用户的数据会话变量中的ID,并向每个查询添加WHERE UserId = ?

由于我想假装,因此唯一存在的数据是当前用户的数据,因此外键检查还应该假装仅存在属于当前用户的行。例如,假设我有这些表:

假设我有这些食谱:

Id | UserId | Name
1  |   7    | "Carrot Cake"
2  |   8    | "Chicken Curry"

以下成分可以:

Id | UserId | RecipeId | Name
1  |   8    |    2     | "Chicken"
2  |   8    |    2     | "Curry"

但以下内容并非如此,因为用户7不拥有配方2:

Id | UserId | RecipeId | Name
1  |   7    |    2     | "Flour"

因此,我希望我的数据库能够像仅存在属于当前用户的行那样进行操作,以便将配料添加到另一个用户的配方中就像插入配料不存在的配方一样,导致查询失败。

有没有一种使用约束来做到这一点的方法?我现在唯一能想到的解决方案是查询配方,并确保每个新成分都属于属于当前用户的配方,但是我有一些表引用了多个其他表,并且这样做需要我对每个插入内容运行多个查询

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。