MySql数据库表中的树数据

我有一个使用邻接列表模型进行层次结构存储的表。 因此,本表中最相关的列是:

ItemId // is auto_increment
ParentId
Level
ParentTrail // in the form of "parentId/../parentId/itemId"

那么我在插入tigger之前创建了一个,填充列LevelParentTrail 。 由于最后一列还包含当前项目的ID,所以我必须在触发器中使用一个技巧,因为auto_increment列在before insert触发器中不可用。 所以我从information_schema.tables表中获取该值。

所有工作都很好,直到我尝试编写更新触发器,当项目更改其父项( ParentId已更改)时,该更新触发器将更新我的项目及其后代。 但是我无法在更新触发器中更新我的表格。 我所能做的就是改变当前记录的值,但不改变其他值。

我可以为分层结构数据使用单独的表格,但这意味着我还必须创建一个将这两个表格(1:1关系)结合在一起的视图,我想尽量避免这种情况。

有没有办法让所有这些在同一个表中,以便这些字段( LevelParetTrail )使用触发器自动设置/更新自己?


这听起来像是可能的,但它会涉及一些重字符串匹配等。不想挖掘自己。

如果您愿意稍微更改数据库模型并实现嵌套集(向下滚动页面),则可以通过触发器更新左右值来轻松完成此操作。

链接地址: http://www.djcxy.com/p/16785.html

上一篇: Tree data in MySql database table

下一篇: What datatype to use when storing latitude and longitude data in SQL databases?