0
我不知道如何解決這個案例需要一些指導我有一個場景,我必須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