每当我尝试执行以下脚本时,PhpMyAdmin都会给我这个错误:
它是自引用的,所以它不应该与它的类型有任何关系,并且语法似乎是正确的,给出了stackoverflow和MySQL的文档中的其他示例。
不确定它是否有帮助,但代码是MySQL Workbench生成的迁移脚本:从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);
答案 0 :(得分:0)
世界上甚至对一个领域引用自身意味着什么?这对我来说是新的。我在桌子上有一列是同一桌子上另一列的外键,但我从来没有听说过引用自身的列。你明白这样的外键约束应该完成什么吗?我的意思是字面意思:这个的实际意义是什么?最有可能的答案是MySQL并不支持这一点。不同的方言和#34;之间存在很多差异。 SQL,并且只是因为从Microsft SQL服务器导出创建此SQL并不意味着MySQL通常支持语法或原则。
其他人可能会收到更多信息,但在此期间我不会尝试完全按原样重现。我会弄清楚它究竟应该完成什么,弄清楚这是否仍然很重要,然后找到一种方法在MySQL中做相同的操作(如果它甚至可能)。
答案 1 :(得分:0)
通常表中还有另一个字段来引用相关记录。例如,您可能有一个 supervisor_id 指向也在临床试验员工表中的主管员工。
现在外键的写法,就是引用自身,变成无限循环。