Re: Manejo de secuencias dentro de transacciones

From: Horacio Miranda <hmiranda(at)gmail(dot)com>
To: "Lorena Gpe(dot) M(dot) Osorio" <peque35(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Manejo de secuencias dentro de transacciones
Date: 2010-10-14 04:32:28
Message-ID: AANLkTin5gF6CHqPO5DXN9umkWSEcnbwt-PAad0+tYgFX@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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 <peque35(at)gmail(dot)com>:
> 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.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Horacio Miranda 2010-10-14 04:35:33 Re: Manejo de secuencias dentro de transacciones
Previous Message Jaime Casanova 2010-10-14 04:22:01 Re: Manejo de secuencias dentro de transacciones