tipos - trigger mysql update
desencadenadores múltiples con el mismo tiempo de acción y evento para un error de tabla mysql (1)
Brian, probablemente has estado agregando y quitando el mismo disparador unas cuantas veces en tu mesa y te has olvidado de eliminarlo la última vez antes de volver a crearlo. Asegúrate de haberlo eliminado antes de volver a crear usando
DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name
y entonces
CREATE TRIGGER ....
Documentación aquí .
Soy nuevo en los desencadenantes y obtengo el error "múltiples activadores con el mismo tiempo de acción y evento para una sola tabla".
He creado una actualización DESPUÉS y una DESPUÉS de eliminar, que son dos eventos / tiempo de acción separados, así que no estoy seguro de por qué recibiría el error.
Aquí está mi consulta:
CREATE TRIGGER `new_enrolment` AFTER INSERT ON `mdl_user_enrolments` FOR EACH ROW BEGIN
INSERT INTO c_master (
ud,
firstname,
lastname,
email,
username,
cid,
course
)
SELECT
mdl_user.id AS uid,
mdl_user.firstname,
mdl_user.lastname,
mdl_user.email,
mdl_user.suspended,
mdl_user.username,
mdl_enrol.courseid AS cid,
mdl_course.fullname AS course
FROM mdl_user_enrolments INNER JOIN mdl_enrol ON mdl_user_enrolments.enrolid = mdl_enrol.id
INNER JOIN mdl_course ON mdl_enrol.courseid = mdl_course.id
INNER JOIN mdl_user ON mdl_user.id = mdl_user_enrolments.userid
WHERE userid = NEW.userid;
END;
CREATE TRIGGER `remove_enrolment` AFTER DELETE ON `mdl_user_enrolments` FOR EACH ROW BEGIN
SELECT mdl_enrol.courseid,
mdl_user_enrolments.userid,
mdl_user_enrolments.enrolid
FROM mdl_user_enrolments INNER JOIN mdl_enrol ON mdl_user_enrolments.enrolid = mdl_enrol.id
WHERE mdl_user_enrolments.enrolid = OLD.enrolid
DELETE FROM c_master
WHERE uid = OLD.userid AND mdl_enrol.courseid;
END;
Como soy nuevo en todo esto, probablemente me esté perdiendo algo simple.