我正在尝试使用数据宏更新闭包表,每当将新记录插入主表时,都需要运行以下代码:
INSERT INTO tblClosure (parent_id, child_id, depth)
SELECT p.parent_id, c.child_id, p.depth+c.depth+1
FROM tblClosure AS p, tblClosure AS c
WHERE p.child_id=$PARENT_ID and c.parent_id=$CHILD_ID;
如您所见,可以使用嵌套循环执行此操作:
Iterate through tblClosure
For each record p with child_id = $PARENT_ID {
Iterate through tblClosure
For each record c with parent_id = $CHILD_ID {
Insert (p.parent_id, c.child_id, p.depth + c.depth + 1) into tblClosure
}
}
主表(tblNodes)和闭包表(tblClosure)都存储在后端数据库中,所以看起来数据宏应该能够做我想要的。
数据宏似乎也有函数Create Record (in...)和For Each Record (in...)。但我根本无法让第二个开火。
这是我的代码(我已经定义temp_node
并temp_parent
作为参数):