问题很简单。我找不到解决方案,所以我问, 这是* .sql文件的内容:
select @max_command_idx=max(command_idx)+1 from command;
insert into command values(3,0,@max_command_idx+1 ,"sub","ctrlr",1,0,"plan",0);
insert into command values(4,1,@max_command_idx+1 ,"sub","ctrlr",1,0,"pla1n",0);
当我执行脚本时,我希望@max_command_idx是一个固定值。这意味着它应该在两个后续插入语句中替换“相同”值。但它并没有这样做。它的作用是为每个insert语句赋予max_command_idx新值。 这是为什么?我怎么解决它? 谢谢
答案 0 :(得分:1)
第一行将@max_command_idx设置为null,因为您实际上是在选择布尔条件。所以在运行时:
select @max_command_idx=max(command_idx)+1 from command;
你实际上在说“如果@max_command_idx等于当前最大command_idx + 1,请选择我1,如果不是则选择我0,如果@max_command_idx为空则选择我为空”。
在你的情况下,@ max_command_idx为null,因此布尔结果为null,因此看起来好像@max_command_idx在每个后续插入中重新初始化。
试试这个:
select max(command_idx)+1 into @max_command_idx from command;
insert into command values(3,0,@max_command_idx+1 ,"sub","ctrlr",1,0,"plan",0);
insert into command values(4,1,@max_command_idx+1 ,"sub","ctrlr",1,0,"pla1n",0);
应该做你想做的......