如何在MySQL中创建复合自引用外键? 1215-无法添加外键约束

如何在MySQL中创建复合自引用外键? 1215-无法添加外键约束,mysql,database,Mysql,Database,每当我尝试执行以下脚本时,PhpMyAdmin都会给出此错误: 它是自引用的,所以它不应该与它的类型有任何关系,并且语法似乎是正确的,给出了stackoverflow和MySQL文档中的其他示例 不确定它是否有用,但代码是由MySQL工作台生成的迁移脚本:从Microsoft SQL迁移到MySQL 有人知道是什么导致了这个错误吗 CREATE TABLE IF NOT EXISTS `clinicalTrialEmployee` ( clinicalTrialId INT NOT NULL

每当我尝试执行以下脚本时,PhpMyAdmin都会给出此错误:

它是自引用的,所以它不应该与它的类型有任何关系,并且语法似乎是正确的,给出了stackoverflow和MySQL文档中的其他示例

不确定它是否有用,但代码是由MySQL工作台生成的迁移脚本:从Microsoft SQL迁移到MySQL

有人知道是什么导致了这个错误吗

CREATE TABLE IF NOT EXISTS `clinicalTrialEmployee` (
  clinicalTrialId INT NOT NULL,
  employeeId INT NOT NULL,
  clinicalTrialEmployeeTypeId INT NULL,
  roleName VARCHAR(50) CHARACTER SET 'utf8' NULL,
  PRIMARY KEY (clinicalTrialId, employeeId),
  CONSTRAINT FK_clinicalTrialEmployee_clinicalTrialEmployee
    FOREIGN KEY (clinicalTrialId , employeeId)
    REFERENCES clinicalTrialEmployee (clinicalTrialId , employeeId)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);

一个领域引用自己到底意味着什么?这对我来说是新的。我曾经让表中的一列成为同一表中另一列的外键,但我从未听说过一列引用自己。您知道这样一个外键约束应该实现什么吗?我的意思是:这件事的真正意义是什么?答案很可能是MySQL不支持这个。SQL的不同“方言”之间有很多差异,仅仅因为MicrosoftSQL服务器的导出创建了此SQL并不意味着MySQL支持语法或一般原则


其他人可能会提供更多的信息,但在此期间,我不会试图按照原样复制这些信息。我会弄清楚它实际上应该完成什么,弄清楚这是否仍然重要,然后找到一种方法在MySQL中做同样的事情(如果可能的话)。

一个字段引用自己到底意味着什么?这对我来说是新的。我曾经让表中的一列成为同一表中另一列的外键,但我从未听说过一列引用自己。您知道这样一个外键约束应该实现什么吗?我的意思是:这件事的真正意义是什么?答案很可能是MySQL不支持这个。SQL的不同“方言”之间有很多差异,仅仅因为MicrosoftSQL服务器的导出创建了此SQL并不意味着MySQL支持语法或一般原则


其他人可能会提供更多的信息,但在此期间,我不会试图按照原样复制这些信息。我会弄清楚它实际上应该完成什么,弄清楚这是否仍然重要,然后找到一种方法在MySQL中做同样的事情(如果可能的话)。

通常表中还有另一个字段引用相关记录。例如,您可能有一个主管id,指向同样在clinicalTrialEmployee表中的主管员工


现在编写外键的方式是,它只是引用自身,这将成为一个无限循环。

通常表中还有另一个字段引用相关记录。例如,您可能有一个主管id,指向同样在clinicalTrialEmployee表中的主管员工

按照现在编写外键的方式,它只是引用自身,这就变成了一个无限循环