Deleting hierarchical data in SQL table

后端 未结 8 2098
遥遥无期
遥遥无期 2020-12-14 09:43

I have a table with hierarchical data.
A column \"ParentId\" that holds the Id (\"ID\" - key column) of it\'s parent.

When deleting a row, I want to delete all c

8条回答
  •  误落风尘
    2020-12-14 10:01

    Depends how you store your hierarchy. If you only have ParentID, then it may not be the most effective approach you took. For ease of subtree manipulation you should have an additional column Parents that wouls store all parent IDs like:

    /1/20/25/40
    

    This way you'll be able to get all sub-nodes simply by:

    where Parents like @NodeParents + '%'
    

    Second approach
    Instead of just ParentID you could also have left and right values. Inserts doing it this way are slower, but select operations are extremely fast. Especially when dealing with sub-tree nodes... http://en.wikipedia.org/wiki/Tree_traversal

    Third approach
    check recursive CTEs if you use SQL 2005+

    Fourth approach
    If you use SQL 2008, check HierarchyID type. It gives enough possibilities for your case. http://msdn.microsoft.com/en-us/magazine/cc794278.aspx

提交回复
热议问题