2014-09-04 31 views
0

我有一個問題想創建下表:MySQL的自反/遞推關係

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

我相信它應該是:

FOREIGN KEY (pseudo_id) REFERENCES autor(id_autor) 
+0

你有'autor'記錄和'id_autor'值爲'A7'嗎?在'autor'中必須存在一條記錄,然後才能將其分配給'pseudo_id'字段中的另一條記錄。 – Linger 2014-09-04 03:25:11

+0

謝謝你的回答靈兒。這確實是我的錯。我必須先創建該記錄! – 2014-09-04 03:52:57

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