Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

duda existencial...

Estas en el tema de duda existencial... en el foro de PostgreSQL en Foros del Web. les cuento. tengo una tabla que al insertar un registro lanza un disparador que, en funcion de los datos insertados, hace otra serie de inserciones ...
  #1 (permalink)  
Antiguo 03/02/2010, 03:16
 
Fecha de Ingreso: febrero-2010
Mensajes: 18
Antigüedad: 14 años, 3 meses
Puntos: 0
duda existencial...

les cuento. tengo una tabla que al insertar un registro lanza un disparador que, en funcion de los datos insertados, hace otra serie de inserciones en otras dos tablas. de estas, la primera posee un codigo autonumerico que utilizara la segunda. con la sentencia
Código:
SELECT last_value INTO codigo FROM fases_codigo_seq;
capto ese codigo.
El problema viene cuando hago esto hasta 6 veces, siempre me queda el mismo valor cuando, antes de cada consulta de este tipo, tengo una insercion en la tabla. os pongo parte del codigo ya que es repetitivo:


Código:
fin = ini;
ini = ini - interval ''1 month'';
INSERT INTO fases (cod_grupo,descripcion,f_ini,f_fin)VALUES (NEW.codigo, ''1 mes - revision'', ini, fin);
SELECT last_value INTO codigo FROM fases_codigo_seq;	
INSERT INTO tareas (cod_fase, descripcion, tipo, f_fin) VALUES (codigo, ''Outage QA/QC Checklists'', ''P'', fin);
INSERT INTO tareas (cod_fase, descripcion, tipo, f_fin) VALUES (codigo, ''Clearance'', ''P'', fin);
				
fin = ini;
ini = ini - interval ''2 month'';
INSERT INTO fases (cod_grupo,descripcion,f_ini,f_fin)VALUES (NEW.codigo, ''3 - 1 meses antes'', ini, fin);
SELECT last_value INTO codigo FROM fases_codigo_seq;		
INSERT INTO tareas (cod_fase, descripcion, tipo, f_fin) VALUES (codigo, ''Receipt Inspection'', ''P'', fin);
INSERT INTO tareas (cod_fase, descripcion, tipo, f_fin) VALUES (codigo, ''ENG Evaluation'', ''P'', fin);
				
fin = ini;
ini = ini - interval ''3 month'';
INSERT INTO fases (cod_grupo,descripcion,f_ini,f_fin)VALUES (NEW.codigo, ''6 - 3 meses antes'', ini, fin);
SELECT last_value INTO codigo FROM fases_codigo_seq;		
INSERT INTO tareas (cod_fase, descripcion, tipo, f_fin) VALUES (codigo, ''Outage FMEA'', ''P'', fin);
INSERT INTO tareas (cod_fase, descripcion, tipo, f_fin) VALUES (codigo, ''HotList'', ''P'', fin);
  #2 (permalink)  
Antiguo 03/02/2010, 03:21
 
Fecha de Ingreso: febrero-2010
Mensajes: 18
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: duda existencial...

lo midifique haciendo esa consulta solo una vez y para las siguienes simplemente seleccionando el maximo valor del codigo de fase. no entiendo porque de la otra manera no sale el mismo resultado..........

Código:
fin = ini;
ini = ini - interval ''1 month'';
INSERT INTO fases (cod_grupo,descripcion,f_ini,f_fin)VALUES (NEW.codigo, ''1 mes - revision'', ini, fin);
SELECT last_value INTO codigo FROM fases_codigo_seq;	
INSERT INTO tareas (cod_fase, descripcion, tipo, f_fin) VALUES (codigo, ''Outage QA/QC Checklists'', ''P'', fin);
INSERT INTO tareas (cod_fase, descripcion, tipo, f_fin) VALUES (codigo, ''Clearance'', ''P'', fin);
				
fin = ini;
ini = ini - interval ''2 month'';
INSERT INTO fases (cod_grupo,descripcion,f_ini,f_fin)VALUES (NEW.codigo, ''3 - 1 meses antes'', ini, fin);
SELECT MAX(codigo) INTO codigo FROM fases;		
INSERT INTO tareas (cod_fase, descripcion, tipo, f_fin) VALUES (codigo, ''Receipt Inspection'', ''P'', fin);
INSERT INTO tareas (cod_fase, descripcion, tipo, f_fin) VALUES (codigo, ''ENG Evaluation'', ''P'', fin);
				
fin = ini;
ini = ini - interval ''3 month'';
INSERT INTO fases (cod_grupo,descripcion,f_ini,f_fin)VALUES (NEW.codigo, ''6 - 3 meses antes'', ini, fin);
SELECT MAX(codigo) INTO codigo FROM fases;		
INSERT INTO tareas (cod_fase, descripcion, tipo, f_fin) VALUES (codigo, ''Outage FMEA'', ''P'', fin);
INSERT INTO tareas (cod_fase, descripcion, tipo, f_fin) VALUES (codigo, ''HotList'', ''P'', fin);

Etiquetas: existencial
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:45.