我有一些带有这种模式的表(简化):
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,我只能在插入一行后才能获取它,但是我不能插入行而未定义父级。递归...
答案 0 :(得分:1)
您可以从父字段中删除NOT NULL属性,这样您就可以拥有root。 当然,在这种情况下,您必须保证代码中的文件夹树cosistency,而不是 通过数据库。 MySQL参考手册不建议用户这样做:
建议您使用外键 仅引用UNIQUE和NOT NULL键。 http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
但总是取决于你。