Mysql 表中的检查是否可以检查另一个表的列中是否存在属性?
我有两张桌子,consulta和Specialidade:Mysql 表中的检查是否可以检查另一个表的列中是否存在属性?,mysql,sql,Mysql,Sql,我有两张桌子,consulta和Specialidade: 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_e
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`)))
)
但这不起作用。
我需要知道table consulta的属性specialidade\u specialidade
是否在table specialidade的specialidade
列中。是否需要外键关系:
CREATE TABLE IF NOT EXISTS sbd.consulta (
Especialidade_especialidade VARCHAR(50) NOT NULL,
FOREIGN KEY(Especialidade_especialidade) REFERENCES sbd.especialidade(especialidade))
您可以忽略表specialidade
中的列specialidade
,因为该表已将specialidade
定义为其主键,从而使其成为引用的默认列
请注意,将表和列命名为相同可能会导致混淆。更喜欢(在所有表中)简单地命名主键列
id
@AdathSkyderson“不起作用”是什么意思。它必须工作。我只需要知道specialidade_specialidade是否是表specialidadeer的specialidade错误代码:3814。检查约束“consulta_chk_1”的表达式包含不允许的函数:sbd
specialidade
。假设我在表specialidade中有“B”和“a”。如何在签入表consulta中获得Speciality“B”的名称?如check(从sbd
Specialidade
中选择name
),其中Specialidade
=B
)=“SOFIA”