MySQL 外键引用 WHERE 字段=值

标签 mysql

我在 MySQL 中创建了一个表(请参阅下面的代码)。正如您在代码中看到的,我有一个引用 idNo 的外键管理器。不过,我只想引用带有 cat='B' 的员工。所以我需要类似的东西

FOREIGN KEY (manager ) REFERENCES Employee(idNo WHERE cat='B').

有什么想法可以实现这一点。

idNo SMALLINT AUTO_INCREMENT UNIQUE, 
name VARCHAR(25) NOT NULL, 
telNo INT(11) NOT NULL, 
cat CHAR(1) NOT NULL, 
manager SMALLINT, 
PRIMARY KEY (idNo ),
FOREIGN KEY (manager ) REFERENCES Employee(idNo) on DELETE CASCADE)ENGINE=INNODB   
AUTO_INCREMENT=1000;

最佳答案

外键不允许条件。

如果你想强制条件,你必须通过编码来完成。

它可以在您的非数据库代码(Java、PHP、VB...)中完成,或者您可以在 MySQL 中创建一个过程,该过程将被调用来执行插入,并且如果条件满足,它将返回错误代码不匹配。

如果您从不同的代码/应用程序插入,则该过程是可行的方法,因为它将是集中式的。

关于MySQL 外键引用 WHERE 字段=值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22443780/

相关文章:

mysql - 如何在MySQL 8.0中授予root用户所有特权

java - Maven如何根据平台配置更改依赖版本(MySQL)

php - SQL查询以选择一个月的两天之间

php - 如何在网络托管服务上使用 mysql_connect(...)

php - 如何在没有 "like"参数的情况下在 codeigniter 中进行搜索?

PHP,仅在无序列表中返回非空值

mysql - 如何设计一个简单的数据库

mysql - 在 Grails war 中几个小时后与数据库的连接丢失

mysql - rails : How to store extra attributes using single table inheritance?

php - 是否有关闭带有 PDO 的 mysql 准备语句的功能?