首页 > 解决方案 > 可以在表中检查是否有一个属性在另一个表的列中吗?

问题描述

我有两张桌子,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 列中。

标签: mysqlsql

解决方案


你想要一个外键关系:

CREATE TABLE IF NOT EXISTS sbd.consulta (
    Especialidade_especialidade VARCHAR(50) NOT NULL,
    FOREIGN KEY(Especialidade_especialidade) REFERENCES sbd.especialidade(especialidade))

您可以省略提及表中的列especialidadeespecialidade因为该表已定义especialidade为其主键,这使其成为引用的默认列。

请注意,将表和列命名为相同可能会导致混乱。更喜欢简单地命名主键列(在所有表中)id


推荐阅读