我有代码来创建一个表:
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
,以及它{{1}}顶级生物种类。)
答案 0 :(得分:0)
PRIMARY KEY
是一个唯一索引,其中所有键列必须定义为NOT NULL
。如果它们没有显式声明为NOT NULL
,那么MySQL会隐式声明它(并且默默地)。 MySQL Manual