mysql过程插入使用变量

wnavrhmk  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(174)

在mysql过程中进行插入时我有一个问题。
我用了一个局部变量 IDnew 从原始表中获取(max(id)+1)。
然后我想插回一些具体的信息。
但是,我失败了,因为插入后新的id不是我想要的。这里错过了什么?

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]

但是,最大id应为“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

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题