2017-01-18 16 views
0

これは私の手続きですが、2つのINSERTを行う必要があります.2つ目のINSERTの値の1つは以前の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エルウルティモidはUSARラfuncion LAST_INSERT_IDを(debes):

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; 
関連する問題