переменная вставки процедуры mysql использует переменную - PullRequest
0 голосов
/ 15 мая 2018

У меня есть вопрос при внесении в MySQL процедуры.

Я использовал локальную переменную IDnew, чтобы получить (max (id) +1) из исходной таблицы.

Тогда я хочу вставить его обратно с определенной информацией.

Однако, я потерпел неудачу, так как новый идентификатор не тот, который я хочу после вставки. Что здесь упускается?

DELIMITER $$
create procedure proc_InsertStar(IN sname varchar(100), IN syear INT(11))

BEGIN
    declare IDnew varchar(255);
    select IDnew;                #line A
    select concat("nm",lpad(cast(max(replace(id,"nm","")+1)as char),7,'0')) into IDnew from stars;
    select IDnew;                #line B
    insert into moviedb.stars(id,name,birthYear) values(IDnew,sname, syear);

END
$$

DELIMITER ;

call proc_InsertStar("jaden smith", 1998);
select * from stars where name="jaden smith";  #line C

Результат показан ниже:

line A: 
   [enter image description here][1]


line B:
[enter image description here][2]

line C:
[enter image description here][3]

Однако максимальный идентификатор должен быть «nm9423081», то есть «nm9423080», добавить единицу на младший бит.

  [1]: https://i.stack.imgur.com/mg7HF.png
  [2]: https://i.stack.imgur.com/BaHiZ.png
  [3]: https://i.stack.imgur.com/qzotC.png
...