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

时间:2014-11-04 16:46:06

标签: mysql foreign-keys relational-database

我有一个users表和其他表格,例如servicesorders等...我希望将其变成users的子表表

到目前为止,这很简单,我只是在users(id)orders(user_id)之间添加外键约束。但是,如果我想添加一个布尔users(disabled)字段,可以将更新级联到引用{{1}中相应行的行中的orders(disabled)services(disabled)字段。通过users密钥?

如果我使用2个键(一个主键和一个非唯一键)在子表中创建父表的引用,它会工作吗?

1 个答案:

答案 0 :(得分:1)

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

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

尽管如此,一切都没有丢失。当用户被禁用时,您可以使用triggers 触发禁用订单和服务。