MySQL反身/递归关系

时间:2014-09-04 03:08:20

标签: mysql database recursion relation

我在尝试创建下表时遇到问题:

CREATE TABLE autor 
(
id_autor VARCHAR (2),
nom_autor VARCHAR (30),
rfc_autor VARCHAR (15),
pseudo_id VARCHAR (2), 
PRIMARY KEY (id_autor),
FOREIGN KEY (pseudo_id) REFERENCES autor(id_autor)
);

当我尝试运行以下脚本时:

INSERT INTO `revistas`.`autor` (`id_autor`, `nom_autor`, `rfc_autor`,`pseudo_id`) VALUES ('A3', 'Quijote','','A7');

MySQL显示:

Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`revistas`.`autor`, CONSTRAINT `autor_ibfk_1` FOREIGN KEY (`pseudo_id`) REFERENCES `autor` (`id_autor`))

知道为什么吗?

非常感谢!

2 个答案:

答案 0 :(得分:2)

我相信它应该是:

FOREIGN KEY (pseudo_id) REFERENCES autor(id_autor)

答案 1 :(得分:1)

我认为您希望将引用返回主键:

CREATE TABLE autor (
    id_autor VARCHAR (2),
    nom_autor VARCHAR (30),
    rfc_autor VARCHAR (15),
    pseudo_id VARCHAR (2), 
    PRIMARY KEY (id_autor),
    FOREIGN KEY (pseudo_id) REFERENCES autor(id_autor)
---------------------------------------------^
);

这适用于SQL Fiddle