una trigger tabla registros para otra insertar genérico eliminacion despues datos create crear contables cambios auditar asientos mysql triggers insert

tabla - trigger mysql insert asientos contables



Insertar desencadenador MySQL después con la consulta Seleccionar de tabla diferente (2)

nuevo para DBA gracias por tener paciencia conmigo.

Descripción general: tengo grupos, subgrupos y usuarios.

  1. El usuario puede ser el propietario del grupo, por lo que debe ser el propietario de todos sus subgrupos
  2. El usuario puede ser colaborador o seguidor del grupo, por lo que debe ser colaborador o seguidor de todos sus subgrupos
  3. El usuario puede ser colaborador o seguidor de solo un subgrupo

Las tablas son las siguientes (simplificadas):

Grupo (topic_id, title)

Subgrupo (subtopic_id, title, topic_id)

rel_Group (user_id, topic_id, type) // Para determinar la relación del usuario con el grupo (propietario, colaborador o seguidor)

rel_Subgroup (user_id, subtopic_id, type) // Para determinar la relación de usuario a Subgroup (Owner, Collaborator o Follower)

Usuario (user_id)

Quiero crear un desencadenante cuando se crea un subgrupo que INSERTAR / ACTUALIZAR / ELIMINAR filas en rel_Subgroup para que los usuarios que son Propietario, Colaborador o seguidor en grupo sean, respectivamente, Propietario, Colaborador o seguidor en el subgrupo

Esto es lo más cercano que tengo, pero sigo recibiendo: # 1415 - No se permite devolver un conjunto de resultados desde un desencadenador.

Consulta SQL

delimiter // create trigger Transfer_Rights_to_Subgroup after insert on Subgroup for each row begin select user_id,type from rel_Group where rel_Group.topic_id = NEW.topic_id; insert into rel_Subgroup VALUES (rel_Group.user_id,NEW.subtopic_id,rel_Group.type); END; // delimiter ;

Espero ordenar la inserción y luego descubriré la actualización / eliminación.

Cualquier ayuda, muy apreciada!

Gracias


Se las arregló para resolverlo:

DROP TRIGGER IF EXISTS Transfer_Rights_to_Subgroup; DELIMITER // CREATE TRIGGER Transfer_Rights_to_Subgroup AFTER INSERT ON subgroup FOR EACH ROW BEGIN DECLARE done INT DEFAULT FALSE; DECLARE c1 INT; DECLARE c2 INT; DECLARE cur CURSOR FOR SELECT User_ID,Type FROM rel_group WHERE rel_group.Topic_ID = NEW.Topic_ID; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cur; ins_loop: LOOP FETCH cur INTO c1,c2; IF done THEN LEAVE ins_loop; END IF; INSERT INTO rel_Subgroup VALUES (c1,NEW.Subtopic_ID,c2); END LOOP; CLOSE cur; END; // DELIMITER ;


Prueba este:

delimiter // create trigger Transfer_Rights_to_Subgroup after insert on Subgroup for each row begin select user_id,type into @userid, @type from group where rel_Group.topic_id = NEW.topic_id; insert into rel_Subgroup VALUES (@userid,NEW.subtopic_id,@type); END; // delimiter ;