mysql skript parametrlari va max funktsiyasi

Savol juda oddiy. Men faqat hal qilib topolmadim, shuning uchun men so'rayapman, * .Sql faylining mazmuni:

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);

men buyruqni bajarganimda, @max_command_idxni sobit bir qiymat deb kutgan edim. u keyingi qo'shimchalarning ikkalasida ham "bir xil" qiymati almashtirishni anglatadi. Ammo buni qilmadi. har bir qo'shtirnoq uchun max_command_idx ning yangi qiymatini berish edi. nima sababdan? va uni qanday hal qilishim mumkin? rahmat

0
yaxshiroq javob uchun [bu erda] [1] ga qarang. [1]: stackoverflow.com/savollar/7992889 /; hellip;
qo'shib qo'ydi muallif rahman, manba

1 javoblar

Birinchi satr @max_command_idx ni bo'sh qoldiradi, chunki siz aslida boolean holatni tanlaysiz. Shunday qilib:

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

Siz aslida "@max_command_idx joriy maksimal command_idx + 1 ga teng bo'lsa, meni 1 tanlang, agar bo'lmasa 0 ni tanlang va agar @max_command_idx bo'sh bo'lsa null ni tanlang".

Sizning holatingizda @max_command_idx null, shuning uchun boolean natija null, shuning uchun @max_command_idx keyingi qo'shimchalarning har birida yangidan boshlanadi.

Buni ko'ring:

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);

Siz xohlagan narsani qilish kerak ...

1
qo'shib qo'ydi
yeaaaaaaaaah, tanx dud.
qo'shib qo'ydi muallif rahman, manba
ba'zi muhim yangilanishlar. Buyruq jadvali buyruq_idx ustunida auto_increment xususiyati mavjud edi. shuning uchun yuqoridagi anser maxsus holatda haqiqiy bo'lishi mumkin, lekin quyidagi ishlamaydi: 1-buyruqlar jadvali o'zi bo'sh 2-boshqa jadvalda ishlaydigan buyruq faylida @max_command_idx foydalaning (command_idx uning FK funksiyasidan foydalanadi)
qo'shib qo'ydi muallif rahman, manba