2012-06-03 2 views
0

спасибо, что нашли время, чтобы посмотреть мою тему.MySQL fk ссылается на таблицу ... не в состоянии вставить новую строку

Я пытаюсь создать таблицу MySQL для категорий товаров со столбцом для родительской категории в таблице. Я привязал его к таблице как fk и намерен вставить (0) в значение столбца для элементов, у которых нет родителей.

Вот определение таблицы:

-- ----------------------------------------------------- 
-- Table `mydb`.`itemCategories` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`itemCategories` (
    `itecat_id` INT UNSIGNED NOT NULL AUTO_INCREMENT , 
    `category` VARCHAR(60) NOT NULL , 
    `parentCat` INT UNSIGNED NOT NULL , 
    PRIMARY KEY (`itecat_id`) , 
    UNIQUE INDEX `uniqueCat` (`category` ASC) , 
    INDEX `fk_itemCategories_itemCategories1` (`parentCat` ASC) , 
CONSTRAINT `fk_itemCategories_itemCategories1` 
    FOREIGN KEY (`parentCat`) 
    REFERENCES `mydb`.`itemCategories` (`itecat_id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 

Когда я пытаюсь вставить новую строку, это дает следующее сообщение об ошибке:

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`mydb`.`itemCategories`, CONSTRAINT `fk_itemCategories_itemCategories1` FOREIGN KEY (`parentCat`) REFERENCES `itemCategories` (`itecat_id`) ON DELETE NO ACTION) 

Любая помощь в том, как это исправить, или лучше способ сделать это, будет очень признателен.

Спасибо!

ответ

2

0 - ценность! Вы должны использовать NULL как «пустое поле».

+0

Спасибо за ответ. Пробовал это, но он дал следующую ошибку: ERROR 1048 (23000): Столбец «parentCat» не может быть пустым – m33r

+0

Это потому, что вы определили его как «NOT NULL». Вы должны изменить схему таблицы, чтобы разрешить значения NULL в этом поле. –

+0

Dohh ... tyvm, который его исправил. – m33r