繁体   English   中英

外键mysql

[英]foreign key mysql

我有以下表格:

PROFILE table {
user_id INT, 
apitype enum('facebook' , 'main')
}

USER table {
id INT
}

PROFILE.user_id是指向USER表中ID的外键,但PROFILE.apitype = 'main'

所以基本上PROFILE.user_id并不是指一个ID在user表中,如果PROFILE.apitype != 'main'

如何在MYSQL中完成此操作?

您可能可以使用在插入/更新之前触发的触发器 ,并检查apitype的值。 甚至还有一些方法可以在MySQL触发器中引发错误,例如,检查this

好吧,因为这是逻辑,所以应该在应用程序而不是数据库中处理。

您可以在配置表中将user_id添加为可为空,使连接成为可选,并根据您使用的存储引擎尝试触发器(尽管在mysql中对其了解不多)。

我认为您无法在Mysql中以简单的方式完成此操作。

例如在Postgres中,您有一个检查约束,您可以在其中检查apitype是否为main,然后user_id必须为null。

在Mysql中,您只能使用触发器执行此操作,但并非如此简单。 我认为对您来说最简单,最可靠的方法就是在您的应用程序中进行检查。 但是您仍然可以在user_id上设置外键,即使有时它为null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM