Tree data in MySql database table
Posted
by Robert Koritnik
on Stack Overflow
See other posts from Stack Overflow
or by Robert Koritnik
Published on 2009-12-10T10:47:49Z
Indexed on
2010/05/13
1:04 UTC
Read the original article
Hit count: 273
I have a table that uses Adjacency list model for hierarchy storage. My most relevant columns in this table are therefore:
ItemId // is auto_increment
ParentId
Level
ParentTrail // in the form of "parentId/../parentId/itemId"
then I created a before insert tigger, that populates columns Level
and ParentTrail
. Since the last column also includes current item's ID I had to use a trick in my trigger because auto_increment
columns are not available in the before insert trigger. So I get that value from the information_schema.tables
table.
All works fine, until I try to write an update trigger, that would update my item and its descendants when the item changes its parent (ParentId
has changed). But I can't make an update on my table inside the update trigger. All I can do is to change current record's values but not other's.
I could use a separate table for hierarchy data, but that would mean that I would also have to create a view that would combine these two tables (1:1 relation) and I would like to avoid this is at all possible.
Is there a way to have all these in the same table so that these fields (Level
and ParetTrail
) set/update themselves automagically using triggers?
© Stack Overflow or respective owner