змінні скрипта mysql та функція max

Питання досить просте. Я просто не міг знайти рішення, тому я прошу, Ось вміст файлу * .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 буде фіксованою величиною. Це означає, що він повинен замінити "одне і те ж" значення в обох наступних операціях вставки. Але це не зробило цього. що він зробив, це дати мені нове значення max_command_idx для кожної операції вставки. чому так? і як я можу її вирішити? Дякую

0
зверніться до [тут] [1] для кращої відповіді. [1]: stackoverflow.com/questions/7992889/& hellip;
додано Автор rahman, джерело

1 Відповіді

У першому рядку буде встановлено значення @max_command_idx, що є нульовим, оскільки ви фактично вибираєте булеві умови. Отже, під час виконання цього:

select @max_command_idx=max(command_idx)+1  from command;

Фактично ви говорите "виберіть мене 1, якщо @max_command_idx дорівнює поточному максимальному command_idx + 1, оберіть мене 0, якщо це не так, і оберіть null, якщо @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);

Слід робити те, що ви хочете ...

1
додано
yeaaaaaaaaah, tanx dud.
додано Автор rahman, джерело
деякі важливі оновлення. Моя таблиця команд мала атрибут auto_increment у стовпці command_idx. тому вищеназваний anser буде вірним у спеціальному випадку, але не буде працювати, якщо: 1-команда таблиця сама порожня 2-використання @max_command_idx в скрипті, що працює на іншій таблиці (яка використовує command_idx як її FK)
додано Автор rahman, джерело