更新一个星列直到根节点添加新条目
问题描述:
我不知道如何解决这个案例需要一些指导我有一个场景,我必须update
a star
列字段的根节点添加到目前为止的每个子条目我已经做到了这一点,它的更新直接链接节点的star
列不完整的路径一样,如果A
是root
和B C & D
是children
然后A
star
列得到更新,现在如果C
B
或D
增加低于他们的东西A
星柱没有变更新,我有关于触发器和SQL的知识较少,我卡住了我搜索了很多,但没有找到解决方案这里是SQL的方法是做到目前为止所有这一切。更新一个星列直到根节点添加新条目
DELIMITER @@
DROP PROCEDURE p_prefix_nodes_add_new_paths_after_insert @@
CREATE PROCEDURE cvs.p_prefix_nodes_add_new_paths_after_insert
(
param_node_new_id INT UNSIGNED,
param_node_parent_id INT UNSIGNED
)
BEGIN
INSERT INTO `prefix_nodes_paths` (
`ancestor_id`,
`descendant_id`,
`path_length`
)
SELECT
`ancestor_id`,
`param_node_new_id`,
`path_length` + 1
FROM
`prefix_nodes_paths`
WHERE `descendant_id` = `param_node_parent_id`
UNION
ALL
SELECT
`param_node_new_id`,
`param_node_new_id`,
0 ;
Update prefix_nodes_paths
Set stars=stars+1
where ancestor_id=param_node_parent_id;
END @@
DELIMITER ;
是的,我试过嵌套集合模型,我不知道如何分配左右值到节点,因为我必须处理一个通用的情况下,我不知道用户的数量,我已经实现了闭包方法,我认为它很容易实现其他嵌套集模型,邻接列表和路径枚举模型 – Wiz
您使用什么编程语言?你有没有考虑过使用一些已经编写过的嵌套集合模型库?通常情况下,使用一个库比自己实现这个东西更简单。无论您将拥有多少用户,这都无关紧要 - 有很多情况下需要在更新过程中使用非常简单的计算来重新生成左/右值。 – vitalikaz
我在php中这样做,并且我在一些图书馆中找到了它,但是我不知道如何使用它们,如果您有任何有用的信息,请让我知道它,并且我也是web开发领域的新成员,所以我不知道真的很多东西... – Wiz