DROP PROCEDURE IF EXISTS ingresar; DELIMITER // CREATE PROCEDURE ingresar (IN inick CHAR(16), IN imsg VARCHAR(255), IN iservidor VARCHAR(70), IN icanal CHAR(20), IN idia DATE, IN ihora TIME, IN iyo BOOL, IN itopic BOOL, IN iaway BOOL) LANGUAGE SQL BEGIN DECLARE myid_nick INT default NULL; DECLARE myid_dia INT default NULL; DECLARE myid_servidor INT default NULL; DECLARE myid_canal INT default NULL; DECLARE myid_servidorcanal INT default NULL; SELECT myid_nick=id_nick FROM Nicks WHERE nick = inick; IF myid_nick = NULL THEN INSERT INTO Nicks SET nick = inick; SELECT myid_nick=LAST_INSERT_ID(); END IF; SELECT myid_dia=id_dia FROM Dias WHERE dia = idia; IF myid_dia = NULL THEN INSERT INTO Dias SET dia = idia; SELECT myid_dia=LAST_INSERT_ID(); END IF; SELECT myid_servidor=id_servidor FROM Servidores WHERE servidor = iservidor; IF myid_servidor = NULL THEN INSERT INTO Servidores SET servidor = iservidor; SELECT myid_servidor=LAST_INSERT_ID(); END IF; SELECT myid_canal=id_canal FROM Canales WHERE canal = icanal; IF myid_canal = NULL THEN INSERT INTO Canales SET canal = icanal; SELECT myid_canal=LAST_INSERT_ID(); END IF; SELECT myid_servidorcanal=id_servidorcanal FROM ServidorCanal WHERE id_servidor = myid_servidor AND id_canal = myid_canal; IF myid_servidorcanal = NULL THEN INSERT INTO ServidorCanal SET id_servidor = myid_servidor, id_canal = myid_canal; SELECT myid_servidorcanal=LAST_INSERT_ID(); END IF; INSERT INTO Mensajes SET id_servidorcanal = myid_servidorcanal, id_dia = myid_dia, id_nick = myid_nick, msg = imsg, hora = ihora, yo = iyo, topic = itopic, away = iaway; /*INSERT INTO Mensajes (id_servidorcanal, id_dia, id_nick, msg, hora, yo, topic, away) VALUES (myid_servidorcanal, myid_dia, myid_nick, imsg, ihora, iyo, itopic, iaway);*/ END; // DELIMITER ;