2011-06-19 39 views
0

我想創建一個自引用FK:MySQL的InnoDB的創建FK錯誤

DROP TABLE IF EXISTS `Company`; 
CREATE TABLE `Company` (
    `company_id`  INTEGER(32) UNSIGNED AUTO_INCREMENT, 
    `parent_company_id` INTEGER(32), 
    PRIMARY KEY (`company_id`) 
) ENGINE=InnoDB; 

ALTER TABLE `Company` 
    ADD FOREIGN KEY `parent_company_id` REFERENCES `Company`(`company_id`); 

我收到以下錯誤:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'REFERENCES Company (company_id)' at line 1

回答

0

明白了。

你必須改變

parent_company_id INTEGER(32)

要匹配的company_id的定義除了自動增量,然後使用該語句

ALTER TABLE `Company` 
    ADD CONSTRAINT fk_parent_company_id FOREIGN KEY (`parent_company_id`) REFERENCES `Company`(`company_id`) 

所以基本上記得把無符號的您正在使用FK的列,以便它與引用密鑰的定義相匹配