1
Migración de Datos / Migración de mdp_personas por Script. Guarani 3.14. [Solucionado]
« on: Junio 25, 2018, 09:26:57 am »
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
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