2011-01-05 92 views
1

因爲我有這麼多的類別,我創建了一個單一的 「類別」 的數據庫表:的MySQL刪除表問題

"id_category , parent_id , category_name , category_tag" 

例如:

---------------------------------------------------------- 
    | id_category | parent_id | category_name | category_tag | 
    ---------------------------------------------------------- 
    | 1   | 0   | Cars   | cars   | 
    | 2   | 1   | Parts   | parts  | 
    | 3   | 2   | Accesories | accesories | 
    ---------------------------------------------------------- 

樹:

Cars 
    |_Parts 
      |_Accesories 

當我想要刪除樹中的所有記錄時,就會出現我的問題。 如何從上面的示例中刪除樹分支中的所有記錄。

mySQL中使用PHP可能嗎?

回答

2

查找InnodB,即您的網站目前可能使用的MyISAM類型的數據庫引擎,也可以查詢Cascade Deletes

InnobDb讓你指定表格中的指示之間的關係,然後你可以指定一個動作來判斷刪除或更新行時會發生什麼。

您想將ON DELETE操作設置爲CASCADE,這會將刪除操作級聯到子行及其子行。所以刪除父會自動刪除所有的孩子,孫子女等

+0

我剛剛閱讀mysql文檔...似乎工作。非常感謝您的指徵。 – morowind 2011-01-05 18:08:34

+0

我沒有得到答案嗎? :-P – 2011-01-05 18:10:34

+0

我不知道該怎麼做!你可以指點我(再:) :)方向... – morowind 2011-01-05 18:26:08

0

數據庫表本質上不是樹你通常會做的是

DELETE FROM categories WHERE id_category=3 

DELETE FROM categories WHERE id_category=3 AND parent_id=2 
+0

我知道這個。而是創建10個相關的表我想用一個表.. – morowind 2011-01-05 18:06:45

+0

這根本不是可擴展的。避免。 – 2011-01-05 18:11:56

0

如果您沒有帶約束的鍵,則可以通過表上的TRUNCATE命令刪除所有內容。

如果您確實有一個配置爲級聯刪除的密鑰,刪除頂級項目(parent_id = 0)將刪除所有依賴行和子分隔行。在這種情況下,刪除第一行將清空表格。

+0

謝謝。我只需要閱讀更多mySql文檔:) – morowind 2011-01-05 18:13:03