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