我有以下表格:
PROFILE table {
user_id INT,
apitype enum('facebook' , 'main')
}
USER table {
id INT
}
PROFILE.user_id
是指向USER表中ID的外键,但仅限于PROFILE.apitype = 'main'
所以基本上PROFILE.user_id
如果PROFILE.apitype != 'main'
如何在MYSQL中完成此任务?
答案 0 :(得分:1)
答案 1 :(得分:0)
嗯,因为这是逻辑,它应该在应用程序中处理,而不是数据库。
您可以将profile-table中的user_id添加为nullable,使连接可选,并且根据您使用的存储引擎,您可以尝试触发器(虽然在mysql中不太了解它们)。
答案 2 :(得分:0)
我认为你无法在Mysql中轻松实现这一目标。
例如,在Postgres中你有一个检查约束,你可以检查apitype是否为main,那么user_id必须为null。
在Mysql中你只能用触发器来做这件事并不容易。我认为对您而言最简单的方法可能是在您的应用程序中检查它。但是你仍然可以在user_id上设置一个外键,即使它有时是空的