在两列上添加外键约束是否安全,而其中一列不是唯一的(MySQL)?

在两列上添加外键约束是否安全,而其中一列不是唯一的(MySQL)?,mysql,foreign-keys,relational-database,Mysql,Foreign Keys,Relational Database,我有一个用户表和其他表,如服务,订单,等等。。。这就是我想要转换为用户表的子表 到目前为止,它很简单,我只是在users(id)和orders(userid)之间添加了外键约束。但是,如果我想添加一个布尔值users(disabled)字段,该字段将通过(user\u id)键将更新级联到引用users中相应行的行中的orders(disabled)和services(disabled)字段,该怎么办 如果我在子表中使用两个键(一个主键和一个非唯一键)创建对父表的引用,是否可行?如果您尝试过,您

我有一个
用户
表和其他表,如
服务
订单
,等等。。。这就是我想要转换为
用户
表的子表

到目前为止,它很简单,我只是在
users(id)
orders(userid)
之间添加了外键约束。但是,如果我想添加一个布尔值
users(disabled)
字段,该字段将通过
(user\u id)
键将更新级联到引用
users
中相应行的行中的
orders(disabled)
services(disabled)
字段,该怎么办


如果我在子表中使用两个键(一个主键和一个非唯一键)创建对父表的引用,是否可行?

如果您尝试过,您可能已经自己回答了您的问题。基本上,您不能在不属于外部表主键的列上创建外键关系(顾名思义)

因此,除非
disabled
列是
users
表上主键的一部分,否则,不,您将无法在另一个包含
disabled
列的表中创建外键关系


不过,一切都没有失去。当用户被禁用时,您可以使用触发订单和服务的禁用。

我听说MySQL中的InnoDB允许它