2009-12-28 40 views
0

我有了一個結構的 「類別」 表:MySQL的外鍵遞歸

  • 的categoryId
  • parentId的
  • 類別名稱

在該表中分類樹結構,其中parentId的實際上是一個指向categoryId的指針。

是否可以將一個外鍵RESTRICT指向parentId指向categoryId,以便禁用子節點的刪除?

回答

2

是的,當然一張表可能有一個引用自身的外鍵。例如:

CREATE TABLE categories (
    categoryId INTEGER NOT NULL PRIMARY KEY, 
    parentId INTEGER REFERENCES categories(categoryId), 
    categoryName VARCHAR(32) NOT NULL 
); 

當然,您需要使用InnoDB而不是MyISAM來做這件事。

+0

謝謝,但現在我有另一個問題,如何輸入第一個記錄應該是:categoryId = 1,parentId = 0,categoryName ='test',當沒有0值的categoryId。 – dfilkovi

+0

對於沒有parentId,使用'NULL'而不是'0'。 – bobince

+0

是NULL,但查詢不同於此。我在php中使用遞歸函數「WHERE parentId = $ var」,如果爲空,我需要使用「WHERE parentId IS NULL」,這使事情變得複雜。 – dfilkovi