Me da la sensaccion que si haces un nextval, es correcto que incremente la secuencia se aborte o no la transaccion (por que estas haciendo abort del insert), ahora si creas un valor por defecto donde solo insertas los datos y si abortas la secuencia no deberia incrementar.
http://sqlzoo.net/howto/source/u.cgi/tip000001/postgres algo como sale en este ejemplo. CREATE SEQUENCE sq; CREATE TABLE t_test( id INTEGER PRIMARY KEY DEFAULT NEXTVAL('sq'), name VARCHAR(10) ); INSERT INTO t_test(name) VALUES ('Andrew'); INSERT INTO t_test(name) VALUES ('Gordon'); SELECT * FROM t_test; #### Pero no tengo mucha experiencia como para asegurarlo, es una sensación.... hare el lab para ver como me va, en base a lo que te envio aca. 2010/10/14 Lorena Gpe. M. Osorio <[email protected]>: > BUENOS TARDES!! > > tengo el siguiente bloque de transaccion > > BEGIN; > INSERT INTO empenos(esuc, efolio, ecliente_id, ehora, estatus, eint_mensual, > eint_diario, efch_emp, efch_ven, eprestamo, eprorroga, eprc_finan, eprc_ope, > eprc_custodia, eprc_impuesto, efch_ult_pago, evaluador, efecha_adj, > etipo_pla, econt, elk_cont, efch_corte, eavaluo, efch_ven_ant, eiva, efinan, > eopera, ecusto) VALUES ('RE3', ( 'RE3' || 'E' || '-' || > LPAD(cast(nextval('re3_E' )as varchar),5,'0') ) , '516', '10:29', 'E', > '20.181', '0.6727', '2010-10-13', '2010-11-12', '100', '10', '5.0455', > '8.0727', '7.0636', '11', '1900-01-01', 'EGALLEGOS', '1900-01-01', '30', > '1', '0', '1900-01-01', '200', '2010-10-13', '11', '5.046', '8.073', > '7.064'); > > INSERT INTO empmercanx( mer_suc_id, mer_num_inv, mer_clasif, mer_marca, > mer_modelo, mer_serie, mer_color, mer_ubicacion, mer_metal, mer_kilates, > mer_desc, mer_costo, mer_pre_venta, mer_peso, mer_status, mer_origen, > mer_dividido, mer_scrap, mer_ciu, mer_folio, mer_costo_emp, mer_tipo) VALUES > ('RE3 ','RE3E-0009801','','SAGEM','MOSSS','SS','ROJO > ','CAJA',0,0,'DEC',100.00,200,0,'E',0,FALSE,FALSE,'REYNOSA','RE3E-00098',100.00,'N'); > INSERT INTO auditomer( aud_suc_id, aud_mvt_id, aud_fol_movto, aud_num_inv, > aud_fecha, aud_status, aud_val_id)VALUES ('RE3 > ',1,'RE3E-00098','RE3E-0009801', '2010-10-13', 'E', 'EGALLEGOS');INSERT INTO > empbitaco( bit_tipo_ope, bit_fecha, bit_hora, bit_modulo, bit_tabla, > bit_reg_llave, bit_val_id) VALUES ('AGREGAR','2010-10-13', '10:10','E', > 'EMPENOS','RE3E-00098|RE3 |1', 'EGALLEGOS'); > INSERT INTO cotitular(coti_nombre, coti_empeno, coti_cliente, > coti_fechaemp,coti_horaemp) > VALUES ('NO PROPORCIONA', 'RE3E-00098', '516', '2010-10-13', '10:29'); > INSERT INTO movempeno( mov_suc_id, mov_mvt_id, mov_folio, mov_carabo, > mov_fecha, mov_cliente, mov_val_id, mov_importe, mov_car, mov_abo, > mov_intmora, mov_cont, mov_lkcont, mov_usu, mov_hora, mov_status, > mov_tipopago, mov_fchcorte, mov_folref, mov_posant, mov_fch_intmora, > mov_adicional, mov_ndiasadi) VALUES ('',1 , '', 'C', '2010-10-13', '', > 'EGALLEGOS', 0, 0, 0, 0,0,0, 'EGALLEGOS', '10:10','A', 'n', '1900-01-01', > '', 'E','1900-01-01',0,0); > > INSERT INTO movempeno( mov_suc_id, mov_mvt_id, mov_folio, mov_carabo, > mov_fecha, mov_cliente, mov_val_id, mov_importe, mov_car, mov_abo, > mov_intmora, mov_cont, mov_lkcont, mov_usu, mov_hora, mov_status, > mov_tipopago, mov_fchcorte, mov_folref, mov_posant, mov_fch_intmora, > mov_adicional, mov_ndiasadi) VALUES ('',14 ,( 'RE3' || 'E' || '-' || > LPAD(cast(nextval('re2' ||'_'||'E')as varchar),'5','0')), 'C', '2010-10-13', > '', 'EGALLEGOS',20.18, 20.18, 0, 0,0,0, 'EGALLEGOS', '10:10','A', 'n', > '1900-01-01', '', 'I','1900-01-01',0,0); > > COMMIT; > > > > pero tengo el siguiente problema, aunque la transaccion se aborte como > quiera me incrementa el valor de mi secuencia, y como el folio lo formo con > la secuencia, pues relativamente se esta comiendo un folio, no inserta los > datos en las tablas pero si se incrementa el valor de la secuencia, podrias > o podrian decirme donde esta el error?, acaso estoy utilizando mal la > secuecia? > > es de verdad urgente de antemano gracias por la ayuda. > > saludos!!! > > <!--[if !vml]--> > > > > > > > > -- > L.S.C. Lorena Gpe. M. Osorio > -- Saludos, Horacio Miranda Aguilera. - Enviado a la lista de correo pgsql-es-ayuda ([email protected]) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda
