У меня есть вопрос при внесении в 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