MySQL将变量中的INSERT INTO的结果保存到过程中



这是我的过程,我需要做两个插入,第二个插入中的一个值是结果,前一个插入可能吗?

CREATE PROCEDURE crearEquipo(id_user INT, nombre VARCHAR(45))
COMMENT 'Procedimiento que guarda un equipo con un determinado nombre si no existe ese nombre para ese usuario'
BEGIN
IF NOT EXISTS ( 
    SELECT ut.idTeam FROM usersTeam ut
    INNER JOIN teams t ON t.team_id = ut.team_id
    WHERE t.name = nombre AND ut.idUser = id_user
) 
THEN
    SET @id_team := (INSERT INTO teams(name) VALUES ( nombre));
    INSERT INTO usersTeam (idUser,idTeam) VALUES (id_user,@id_team);
    SELECT 'Equipo guardado correctamente!!!!';
ELSE
    SELECT 'Este equipo para ese cliente ya existe en la base de datos, cambie el nombreteams!';
END IF;

要获取最后一个 id,您必须使用函数 LAST_INSERT_ID()。Para obtener el ultimo id debes usar la funcion LAST_INSERT_ID():

CREATE PROCEDURE crearEquipo(id_user INT, nombre VARCHAR(45))
COMMENT 'Procedimiento que guarda un equipo con un determinado nombre si no existe ese nombre para ese usuario'
BEGIN
IF NOT EXISTS ( 
    SELECT ut.idTeam FROM usersTeam ut
    INNER JOIN teams t ON t.team_id = ut.team_id
    WHERE t.name = nombre AND ut.idUser = id_user
) 
THEN
     (INSERT INTO teams(name) VALUES ( nombre));
     SET @id_team :=LAST_INSERT_ID();
    INSERT INTO usersTeam (idUser,idTeam) VALUES (id_user,@id_team);
    SELECT 'Equipo guardado correctamente!!!!';
ELSE
    SELECT 'Este equipo para ese cliente ya existe en la base de datos, cambie el nombreteams!';
END IF;

最新更新