2017-01-18 23 views
0

這是我的程序,我需要做兩個INSERT,第二個INSERT中的一個值是結果,以前的INSERT是可能的?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; 
+1

「導致以前的INSERT」 - INSERT語句我能想到的唯一的結果就是'LAST_INSERT_ID()'。 –

+0

謝謝,正確的@PaulSpiegel – monchyrcg

回答

0

要獲得最後一個ID,您必須使用函數LAST_INSERT_ID()。 帕拉obtener EL Ultimo的ID debes城市搜救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; 
相關問題