我在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