包含级联更新的MySQL脚本中的While循环
所以我有这个表(为了简单而缩短),我有一个特制的while循环,但是我知道我做错了什么,或者只是不理解MySQL中的while循环 示例表是包含级联更新的MySQL脚本中的While循环,mysql,loops,while-loop,Mysql,Loops,While Loop,所以我有这个表(为了简单而缩短),我有一个特制的while循环,但是我知道我做错了什么,或者只是不理解MySQL中的while循环 示例表是 sample_table --------------------------------- entity_id parent_id int_1 --------------------------------- 1 0 5 7 1 0 10
sample_table
---------------------------------
entity_id parent_id int_1
---------------------------------
1 0 5
7 1 0
10 1 3
11 10 2
12 11 0
13 11 0
int_1是子对象的数量,实体是树结构的实体
1---7
|
10--11---12
|
13
我想在输入另一个分支或子对象(即entity_id 14)后更新子对象的数量这已经通过一个SQL脚本通过一个稍微简单的过程设置好了,但是添加之后,我得到了这个表
entity_id parent_id int_1
---------------------------------
1 0 5
7 1 0
10 1 3
11 10 2
12 11 0
13 11 0
14 13 0
我想我可以在脚本更新后添加这个,注意@parent_实体已经在脚本中预先定义好了
while @parent_entity > 0 do
update sampe_table set int_1=int_1+1 where entity_id = @parent_entity;
set @parent_entity = (select parent_id from sample_table where entity_id = @parent_entity);
end while
这显然不管用,否则我就不会问了
我必须把这个放进程序里吗?是因为@parent_实体已经预定义了吗
我要查找的结果表是
entity_id parent_id int_1
---------------------------------
1 0 6
7 1 0
10 1 4
11 10 3
12 11 0
13 11 1
14 13 0
非常感谢任何有用的东西好的,循环是正确的,但我确实需要按照说明进行操作,这样对我来说才有效
delimiter $$
create procedure updatechildcount()
begin
while @parent_entity > 0 do
update sampe_table set int_1=int_1+1 where entity_id = @parent_entity;
set @parent_entity = (select parent_id from sample_table where entity_id = @parent_entity);
end while;
end $$
delimiter ;
是的,就是这么简单,谢谢帕拉_
为了运行它
调用updatechildcount()它需要在一个过程中进行,我很想查看嵌套集instead@pala_如果它需要进入一个过程,那么为什么它不这样说呢?在一个例子中,它肯定有,但它从来没有在文档中说它必须进入一个过程。如果你备份到它的祖父母文档项,它确切地说,好吧,我确实在你回答时读到了,但让我问你,如果是这样,我将它保存为一个过程,那么我是否必须在过程中声明@parent_entity,因为它是在调用过程的脚本中创建的?但我仍然认为这有点模糊,它从来没有明确指出,虽然循环只在过程中,但它说它们可以包含。。。但我们正在分裂头发