Php 外键mysql
我有以下表格:Php 外键mysql,php,mysql,sql,Php,Mysql,Sql,我有以下表格: PROFILE table { user_id INT, apitype enum('facebook' , 'main') } USER table { id INT } PROFILE.user\u id是指向用户表中id的外键,但仅当PROFILE.apitype='main' 因此,如果PROFILE.apitype!='主“ 如何在MYSQL中实现这一点?好吧,因为这是逻辑,应该在应用程序中处理,而不是在数据库中处理 您可以将概要文件表中的user_id添加为nu
PROFILE table {
user_id INT,
apitype enum('facebook' , 'main')
}
USER table {
id INT
}
PROFILE.user\u id
是指向用户表中id的外键,但仅当PROFILE.apitype='main'
因此,如果PROFILE.apitype!='主“
如何在MYSQL中实现这一点?好吧,因为这是逻辑,应该在应用程序中处理,而不是在数据库中处理
您可以将概要文件表中的user_id添加为null,使连接成为可选的,并且根据您使用的存储引擎,您可以尝试使用触发器(虽然在mysql中不太了解触发器)。好吧,这是逻辑,应该在应用程序中处理,而不是在数据库中处理
您可以将概要文件表中的用户id添加为可空,使连接成为可选连接,并且根据您使用的存储引擎,您可以尝试使用触发器(虽然在mysql中不太了解触发器)。您可能可以使用在insert/update之前触发的,并检查
apitype
的值。甚至有一些方法可以在MySQL触发器中抛出错误,例如检查。您可能可以使用在插入/更新之前触发的,并检查apitype的值。甚至有一些方法可以在MySQL触发器中抛出错误,例如check。我认为在MySQL中用简单的方法无法实现这一点
例如,在Postgres中,您有一个检查约束,您可以检查apitype是否为main,然后用户id必须为null
在Mysql中,您只能使用触发器来实现这一点,这并不容易。我认为对你来说,最简单也是最可靠的方法就是在你的应用程序中检查它。但是您仍然可以在user_id上设置一个外键,即使它有时为空我认为您无法在Mysql中轻松实现这一点 例如,在Postgres中,您有一个检查约束,您可以检查apitype是否为main,然后用户id必须为null 在Mysql中,您只能使用触发器来实现这一点,这并不容易。我认为对你来说,最简单也是最可靠的方法就是在你的应用程序中检查它。但是您仍然可以在user_id上设置外键,即使它有时为null