Power Builder - Update y Rollback Masivo

 
Vista:
Imágen de perfil de Antonio
Val: 176
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Update y Rollback Masivo

Publicado por Antonio (1271 intervenciones) el 24/12/2014 04:51:48
Un saludo a todos y aprovehco la oportuniad para desearles una feliz navidad y un prospero año nuevo a todos, que tengan mucha salud, bienestar y que sus anhelos se cumplan.

necesito de su gran apoyo...

Resulta que tengo que actualizar tablas y mi proceso de hacerlo es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
DELETE FROM detfact
		   WHERE ( detfact.factura =: asFactura ) ;
 
	if sqlca.sqlcode = 0 then
		Commit;
	else
		Rollback;
	end if
 
	  DELETE FROM encfact
	   WHERE (encfact.control =: asFactura) ;
 
		if sqlca.sqlcode = 0 then
			Commit;
		else
			Rollback;
		end if
 
  DELETE FROM impuestos
   WHERE (impuestos.factura =: asFactura );
 
		if sqlca.sqlcode = 0 then
			Commit;
		else
			Rollback;
		end if

como pueden ver despues del DELETED utilizo el sqlca.sqlcode... ¿existe alguna forma de hacer un deleted o un update o un insert a varias tablas y despues de hacerlo en todas aplicar el sqlca.sqlcode que afecte a todas las tablas que utilizo?.. de igual manera, detectar si hubo un error an alguna de las tablas hacer un rollback masivo y deshacer los cambios a todas las tablas afectadas.

¿Es posble esto?.. si alguien tiene alguna experiencia con esto o alguna ayuda se los agradecere muchisimo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Update y Rollback Masivo

Publicado por Jorge (41 intervenciones) el 24/12/2014 17:09:56
Es cuestión de orden:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
DELETE FROM detfact
WHERE ( detfact.factura =: asFactura );
 
if sqlca.sqlcode = 0 then
	//Si está bien, continua con encfact
 
	DELETE FROM encfact
	WHERE (encfact.control =: asFactura) ;
 
	if sqlca.sqlcode = 0 then
		//Si está bien, continua con impuestos
 
		DELETE FROM impuestos
		WHERE (impuestos.factura =: asFactura );
 
		if sqlca.sqlcode = 0 then
			//Si todo esta bien, hace commit
			Commit;
		else
			//Si falla en impuestos, hace rollback
			Rollback;
		end if
	else
		//Si falla en encfact, hace rollback
		Rollback;
	end if
 
else
	//Si falla en detfact, hace rollback
	Rollback;
end if
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Update y Rollback Masivo

Publicado por Leopoldo Taylhardat (710 intervenciones) el 26/12/2014 16:44:16
saludos.... y feliz Navidad...

Eso lo logras con un trigger de la base de datos...
si no funciona por alguna causa (error en el proceso) el deshace todo lo que se hizo durante el proceso...
nota: solo si falla el trigger por error de inserción, etc...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar