Les cuento, estoy haciendo un procedimiento almacenado que es activado por un trigger luego de insertar datos en la tabla llamada "inscritos"
El tema es que no pasa nada no hace lo que deberia hacer, aca les dejo los codigos para que me ayuden u orienten por favor.
Codigo del Trigger
Código:
Y el codigo del porocedimiento esDROP TRIGGER IF EXISTS ingresar_alu_ai ; DELIMITER $$ CREATE TRIGGER ingresar_alu_ai AFTER INSERT ON inscritos FOR each row begin CALL aumentar_inscritos(NEW.tal_id, NEW.cic_id, NEW.pro_rut); end; $$ DELIMITER ;
Código:
No soy muy experimentado en esto de los triggers y procedimientos, pero la logica y el codigo deberian estar bien.DROP PROCEDURE IF EXISTS aumentar_inscritos ; DELIMITER $$ CREATE PROCEDURE aumentar_inscritos (IN taller INT, IN ciclo INT, IN profe varchar(15)) BEGIN DECLARE limite, inscritos INT; SELECT sec_limite, sec_inscritos INTO limite, inscritos FROM seccion WHERE tal_id = taller AND cic_id = ciclo AND pro_rut = 'profe'; IF inscritos < limite THEN SET inscritos = inscritos + 1; UPDATE seccion SET sec_inscritos = inscritos WHERE tal_id = taller AND cic_id = ciclo AND pro_rut = 'profe'; ELSE UPDATE seccion SET sec_estado = "Sin cupos disponibles" WHERE tal_id = taller AND cic_id = ciclo AND pro_rut = 'profe'; END IF; END; $$ DELIMITER ;
IMPORTANTE:
Cuando lo ejecuto me sale lo siguiente
Warning: #1329 No data - zero rows fetched, selected, or processed
La estructura de las tablas involucradas es la siguiente
Código:
CREATE TABLE `ciclo` ( `cic_id` int(11) NOT NULL, `cic_anio` int(11) NOT NULL, `cic_nombre` varchar(100) collate latin1_spanish_ci NOT NULL, `cic_descripcion` text collate latin1_spanish_ci NOT NULL, PRIMARY KEY (`cic_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci; CREATE TABLE `inscritos` ( `alu_rut` varchar(15) collate latin1_spanish_ci NOT NULL, `tal_id` int(11) NOT NULL, `cic_id` int(11) NOT NULL, `pro_rut` varchar(15) collate latin1_spanish_ci NOT NULL, PRIMARY KEY (`alu_rut`,`tal_id`,`cic_id`,`pro_rut`), KEY `tal_id` (`tal_id`,`cic_id`,`pro_rut`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci; CREATE TABLE `profesor` ( `pro_rut` varchar(15) collate latin1_spanish_ci NOT NULL, `pro_nombres` varchar(50) collate latin1_spanish_ci NOT NULL, `pro_paterno` varchar(30) collate latin1_spanish_ci NOT NULL, `pro_materno` varchar(30) collate latin1_spanish_ci NOT NULL, `pro_direccion` varchar(150) collate latin1_spanish_ci NOT NULL, `pro_fono` varchar(15) collate latin1_spanish_ci NOT NULL, `pro_celular` varchar(15) collate latin1_spanish_ci NOT NULL, `pro_correo` varchar(50) collate latin1_spanish_ci NOT NULL, PRIMARY KEY (`pro_rut`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci; CREATE TABLE `seccion` ( `tal_id` int(11) NOT NULL, `cic_id` int(11) NOT NULL, `pro_rut` varchar(15) collate latin1_spanish_ci NOT NULL, `sec_limite` varchar(50) collate latin1_spanish_ci NOT NULL, `sec_inscritos` varchar(50) collate latin1_spanish_ci NOT NULL, PRIMARY KEY (`tal_id`,`cic_id`,`pro_rut`), KEY `pro_rut` (`pro_rut`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci; CREATE TABLE `taller` ( `tal_id` int(11) NOT NULL, `cic_id` int(11) NOT NULL, `tal_nombre` varchar(50) collate latin1_spanish_ci NOT NULL, `tal_descripcion` varchar(100) collate latin1_spanish_ci NOT NULL, PRIMARY KEY (`tal_id`,`cic_id`), KEY `cic_id` (`cic_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci;