Ver Mensaje Individual
  #7 (permalink)  
Antiguo 09/02/2011, 11:46
melina8050
 
Fecha de Ingreso: enero-2010
Ubicación: Soledad-Atlántico
Mensajes: 21
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Manejo de registros simultáneos.

Ésta es mi tabla:
Código:
CREATE TABLE "public"."comprobante" (
"id" int4 DEFAULT nextval('comprobante_id_seq'::regclass) NOT NULL,
"num" varchar(20) NOT NULL,
"fecha" date NOT NULL,
"concepto" varchar(100) NOT NULL,
"tercero" int4 NOT NULL,
"estado" varchar(10) DEFAULT 'activo'::character varying NOT NULL,
"ureg" int4 NOT NULL,
"freg" time(6) NOT NULL
)
El campo num es configurable porque algunos números tienen prefijos con letras o con otro numero y un guion. El campo id lo usamos para hacer las modificaciones y demás cosas. Por ejemplo:

El usuario administrador de la empresa XYZ configura sus consecutivos como mensuales y señala que para el mes de enero el consecutivo empezara en 100.
En este caso los comprobantes se guardan con el prefijo del mes y el consecutivo.
Como el primer consecutivo es el 100 para guardar en la tabla seria $num = '01-100' Pero en el caso que dos usuarios digitadores estén trabajando y abran el formulario a los dos le mostrará que el siguiente consecutivo es 01-100 porque hasta ahora no está registrado. En caso que uno le de enviar primero que el otro, como el php que registra también pregunta por el consecutivo le mostrará al segundo un mesaje comunicándole que su comprobante se registró con 01-101 porque ya otro usuario registro el 01-100. Pero si los dos le dan enviar al tiempo, en el php que registra, la función traerá el mismo consecutivo y $num sera '01-100' para los dos usuarios. Y guardará en la tabla dos comprobantes 01-100.

Lo que quiero saber es si hay una manera de evitar esto en postgres.
No se si se podría con una secuencia teniendo en cuenta que estos consecutivos se pueden configurar.

Aclaro que el identificador de la tabla es id no num, éste campo contiene los numeros de los comprobantes según tengan configurado el consecutivo, porque son formas impresas que guardaran en el sistema, es como decir que guarden la factura FV505 o el comprobante A25-78.