0
我的代碼創建一個表:爲什麼在列上設置鍵約束會從中刪除「NOT NULL」(MySQL)?
DROP TABLE IF EXISTS `database`.`creatures_kinds` ;
CREATE TABLE IF NOT EXISTS `database`.`creatures_kinds` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`parent_id` INT UNSIGNED NULL,
`name_en` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`, `parent_id`),
INDEX `parent_id` (`parent_id` ASC),
CONSTRAINT `parent`
FOREIGN KEY (`parent_id`)
REFERENCES `database`.`creatures_kinds` (`id`)
ON DELETE RESTRICT
ON UPDATE CASCADE)
ENGINE = InnoDB;
什麼讓我感到吃驚的是,新創建的表看起來像這樣:
爲什麼parent_id
設置爲NOT NULL
當我在寫NULL
CREATE TABLE
?
它與PRIMARY KEY
或FOREIGN KEY
有什麼關係?
我想這parent_id
是可識別的關係(它指向更廣泛的生物種類,例如從pigeon
到bird
,這是NULL
爲頂級生物種)。