mysql - 可以在表中检查是否有一个属性在另一个表的列中吗?
问题描述
我有两张桌子,consulta 和 especialidade :
CREATE TABLE IF NOT EXISTS `sbd`.`especialidade` (
`especialidade` VARCHAR(50) NOT NULL,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`especialidade`))
CREATE TABLE IF NOT EXISTS `sbd`.`consulta` (
`Especialidade_especialidade` VARCHAR(50) NOT NULL,
CONSTRAINT `fk_Consulta_Especialidade1`
FOREIGN KEY (`Especialidade_especialidade`)
REFERENCES `sbd`.`especialidade` (`especialidade`),
CHECK(`Especialidade_especialidade` in (`sbd`.`especialidade`
(`especialidade`)))
)
但这不起作用。我需要知道Especialidade_especialidade
表consulta 的属性是否在especialidade
表especialidade 列中。
解决方案
你想要一个外键关系:
CREATE TABLE IF NOT EXISTS sbd.consulta (
Especialidade_especialidade VARCHAR(50) NOT NULL,
FOREIGN KEY(Especialidade_especialidade) REFERENCES sbd.especialidade(especialidade))
您可以省略提及表中的列especialidade
,especialidade
因为该表已定义especialidade
为其主键,这使其成为引用的默认列。
请注意,将表和列命名为相同可能会导致混乱。更喜欢简单地命名主键列(在所有表中)id
。
推荐阅读
- python - 为什么逻辑回归会抛出转换错误(valueerror)?
- ios - 如何获取对 LLDB 中对象的所有强引用
- c - 使用 -save-temps 构建内核 - 这些 9 MB 的 *.i 文件是否全部存在?
- javascript - 如何从这个 ArchGIS 地图“onclick”中获取经度和纬度值并插入到 html 表单字段中?
- amazon-web-services - 我可以从 Boto3 中的客户端对象获取 S3 资源吗
- php - 将文件上传到我的 API 时更改了完整文件权限
- jquery - 在jQuery中,单击后删除表格中的tr
- reactjs - useNavigate 未在登录 v6 react-router-dom 上重定向
- node.js - 在 docker 容器中运行 azcopy 会引发 spawn EACCES 错误
- python - 使用 Python 对具有多个选项卡的 Excel 文件进行 QC