Autor Tema: Migración de mdp_personas por Script. Guarani 3.14. [Solucionado]  (Leído 522 veces)

0 Usuarios y 1 Visitante están viendo este tema.

mpasetti

  • Newbie
  • *
  • Mensajes: 30
  • La verdad no se posee - Se conoce
    • Ver Perfil
    • Universidad Provincial de Oficios Eva Perón
    • Email
  • Institución: Universidad Provincial de Oficios Eva Perón
  • Nombre y apellido: Mauro Pasetti
  • Sistema: SIU Guaraní
  • Teléfono laboral: (02657) 421330
  • Utilizo algun sistéma del SIU: Sí
Quiero realizar este alta de esta persona:
INSERT INTO negocio.mdp_personas(persona, apellido, nombres, sexo, fecha_nacimiento, localidad_nacimiento, nacionalidad, pais_origen,
  recibe_mensajes_x_mail, usuario, autenticacion, bloqueado, email_temporal, email_valido, tipo_usuario_inicial)
Select 4,
       'Fernandez',
       'Alejandro Horacio',
       'M',
       '10/06/1982',
       3905,
       1,
       54,
       1,
       '29596131',
       'md5',
       0,
       NULL,
       0,
       'Alumno';
/*-- ERROR
ERROR:  relation "mdp_personas_tipo_usuario" does not exist
LINE 1: INSERT INTO mdp_personas_tipo_usuario (persona, tipo_usuario...
                    ^
QUERY:  INSERT INTO mdp_personas_tipo_usuario (persona, tipo_usuario) VALUES (NEW.persona, 'Cursos')
CONTEXT:  PL/pgSQL function negocio.ftia_mdp_personas() line 5 at SQL statement
-- ERROR */
-- Veo que se ejecuta el trigger tia_mdp_personas AFTER INSERT (después de insertar los datos en la tabla).  Obviamente al producirse el error se realiza un rollback y no queda ningún registro dado de alta en negocio.mdp_personas
  FOR EACH ROW EXECUTE PROCEDURE negocio.ftia_mdp_personas(); -- INSERT INTO mdp_personas_tipo_usuario (persona, tipo_usuario) VALUES (NEW.persona, 'Cursos');
-- Deshabilito temporalmente los trigger y comienzo la ejecución paso a paso para ver la causa del error.
SET session_replication_role = replica;
-- Ejecuto el Script de inserción de personas sin problemas
--    INSERT INTO mdp_personas_tipo_usuario (persona, tipo_usuario) VALUES (NEW.persona, 'Cursos');
INSERT INTO negocio.mdp_personas_tipo_usuario (persona, tipo_usuario) VALUES (4, 'Cursos');
-- Ejecuto el Script de Insert en negocio.mdp_personas_tipo_usuario SIN Problemas
-- Este Insert, tiene un trigger también AFTER INSERT
  EXECUTE PROCEDURE negocio.ftia_mdp_personas_tipo_usuario(); /* Con el siguiente código
   IF NEW.tipo_usuario = 'Alumno' OR NEW.tipo_usuario = 'Docente' OR NEW.tipo_usuario = 'Cursos' THEN
     INSERT INTO mdp_personas_grupo_acc (persona, tipo_usuario, usuario_grupo_acc, grupo_acceso_default)
          SELECT NEW.persona, g.tipo_usuario, g.usuario_grupo_acc, g.grupo_acc_default
            FROM acc_grupo_acc_x_tipo_usuario as g
           WHERE g.tipo_usuario = NEW.tipo_usuario;
   END IF; */
-- Entonces ejecuto el Script
INSERT INTO negocio.mdp_personas_grupo_acc (persona, tipo_usuario, usuario_grupo_acc, grupo_acceso_default)
   SELECT 4, g.tipo_usuario, g.usuario_grupo_acc, g.grupo_acc_default FROM negocio.acc_grupo_acc_x_tipo_usuario as g WHERE g.tipo_usuario = 'Alumno';
-- negocio.mdp_personas_grupo_acc NO TIENE TRIGGERS.
La ejecución paso a paso es correcta. No puedo descubrir el error que sucede con los triggers habilitados.
Pidanme toda la info que necesitan para entender la causa del problema. Muchas gracias
« Última Modificación: Junio 25, 2018, 12:01:39 pm por mpasetti »

mpasetti

  • Newbie
  • *
  • Mensajes: 30
  • La verdad no se posee - Se conoce
    • Ver Perfil
    • Universidad Provincial de Oficios Eva Perón
    • Email
  • Institución: Universidad Provincial de Oficios Eva Perón
  • Nombre y apellido: Mauro Pasetti
  • Sistema: SIU Guaraní
  • Teléfono laboral: (02657) 421330
  • Utilizo algun sistéma del SIU: Sí
Re:Migración de mdp_personas por Script. [Solucionado]
« Respuesta #1 on: Junio 25, 2018, 12:00:56 pm »
Solucionado:
SET search_path TO negocio,public;

Alejandro Delú

  • Moderador Global
  • *****
  • Mensajes: 8839
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Alejandro Delú
  • Sistema: Guaraní
Re:Migración de mdp_personas por Script. Guarani 3.14. [Solucionado]
« Respuesta #2 on: Junio 25, 2018, 04:45:20 pm »
El error lo daba el trigger de insert que tiene la tabla mdp_personas que intentaba insertar un registro en la tabla mdp_personas_tipo_usuario.
Recuerden siempre setear el search_path primero y no poner el nombre del esquema en cada sentencia porque sino les sucederá esto si las tablas tienen triggers los cuales realizan alguna accion sobre otra tabla.