MySql数据库表中的树数据
我有一个使用邻接列表模型进行层次结构存储的表。 因此,本表中最相关的列是:
ItemId // is auto_increment
ParentId
Level
ParentTrail // in the form of "parentId/../parentId/itemId"
那么我在插入tigger之前创建了一个,填充列Level
和ParentTrail
。 由于最后一列还包含当前项目的ID,所以我必须在触发器中使用一个技巧,因为auto_increment
列在before insert触发器中不可用。 所以我从information_schema.tables
表中获取该值。
所有工作都很好,直到我尝试编写更新触发器,当项目更改其父项( ParentId
已更改)时,该更新触发器将更新我的项目及其后代。 但是我无法在更新触发器中更新我的表格。 我所能做的就是改变当前记录的值,但不改变其他值。
我可以为分层结构数据使用单独的表格,但这意味着我还必须创建一个将这两个表格(1:1关系)结合在一起的视图,我想尽量避免这种情况。
有没有办法让所有这些在同一个表中,以便这些字段( Level
和ParetTrail
)使用触发器自动设置/更新自己?
这听起来像是可能的,但它会涉及一些重字符串匹配等。不想挖掘自己。
如果您愿意稍微更改数据库模型并实现嵌套集(向下滚动页面),则可以通过触发器更新左右值来轻松完成此操作。
链接地址: 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?