MySQL插入未定义的外键

时间:2011-02-05 16:41:43

标签: php mysql

我有一些带有这种模式的表(简化):

CREATE TABLE folders(
  id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  parent INT(11) UNSIGNED NOT NULL,
  PRIMARY KEY (id),
  INDEX FK_folders_folders_id (parent),
  CONSTRAINT FK_folders_folders_id FOREIGN KEY (parent)
  REFERENCES folders (id) ON DELETE CASCADE ON UPDATE CASCADE
)

1个文件夹可以有多个子文件夹,可以属于另一个文件夹。如果它是根文件夹,那么父将包含它自己的ID。

问题是:如何创建根文件夹? ID是auto_increment,我只能在插入一行后才能获取它,但是我不能插入行而未定义父级。递归...

1 个答案:

答案 0 :(得分:1)

您可以从父字段中删除NOT NULL属性,这样您就可以拥有root。 当然,在这种情况下,您必须保证代码中的文件夹树cosistency,而不是 通过数据库。 MySQL参考手册不建议用户这样做:

  

建议您使用外键   仅引用UNIQUE和NOT   NULL键。 http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

但总是取决于你。