可以在mysql innodb表中引用null外键到self表吗?

时间:2015-07-28 10:47:36

标签: php mysql

我有一个评论表,它在id和parent-id列上有自我关系 每个根注释在parent-id字段上都有NULL值(或0)。我尝试在phpmyadmin中关联它们并且我这样做,但是当我插入带有父ID为NULL的注释时,mysql会给出错误。
我们可以在mysql中做这样的事情吗?

#1452 - Cannot add or update a child row: a foreign key constraint fails
(`hezar`.`comment`, CONSTRAINT `comment_ibfk_1` FOREIGN KEY (`parent`)    
REFERENCES `comment` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)   

1 个答案:

答案 0 :(得分:1)

应该工作得很好。但是你必须允许parent的NULL值。您不能插入0,因为这是违反约束。例如:

CREATE TABLE mytable (id INT NOT NULL, ref_id INT, PRIMARY KEY(id), FOREIGN KEY (ref_id) REFERENCES mytable(id) ON DELETE CASCADE) ENGINE=InnoDb;
# working inserts
INSERT INTO mytable VALUES (1, NULL);
INSERT INTO mytable VALUES (2, 1);

# failing insert
INSERT INTO mytable VALUES (3, 0);