RE: [pgsql-es-ayuda] Confiabilidad del OID como clave única

From: Conrado Blasetti <conrado(at)mapfre(dot)com(dot)ar>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: RE: [pgsql-es-ayuda] Confiabilidad del OID como clave única
Date: 2005-08-24 17:42:11
Message-ID: 65746BCC3D99E44998976FD845AD6E6E0C32CE9C@MAIL
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Alvaro, como estas?

Justamente es lo que leí en una versión anterior y no lo pude encontrar en
la docum del 8.0... "tener un idice unico sobre el campo OID"

Pero lo que me llama la atención sobre lo que contestaste es que se van a
duplicar con el correr del tiempo los oid.
O sea que en un futuro, es probable que haya dos registros con OID iguales
en una tabla?

-----Mensaje original-----
De: Alvaro Herrera [mailto:alvherre(at)alvh(dot)no-ip(dot)org]
Enviado el: Miércoles, 24 de Agosto de 2005 11:58 a.m.
Para: Conrado Blasetti
CC: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] Confiabilidad del OID como clave única

On Wed, Aug 24, 2005 at 11:26:56AM -0300, Conrado Blasetti wrote:

> Actualmente estoy probando con postgres 8.0. Tengo creadas las tablas con
el
> attributo WITH OIDS; y mas allá de tener o no una Constraints Foreing Key,
> Unique etc, quería saber si accediendo a las tablas por el attributo OID,
> voy a tener siempre la misma info no duplicada y única en toda la base.
> Según la docum, esto es así, pero en versiones anteriores he leído que
para
> cerciorase que sea única esta clave (oid) , debía configurarse algo que
hoy
> por hoy no recuerdo, y tampoco en la docum de esta versión lo he
encontrado.

Hola, si tienes un indice unico en el campo OID, entonces puedes estar
seguro que el OID sera unico en cada tabla (ojo, esto es valido en cada
tabla en forma independiente-- puede haber OIDs repetidos, si observas
mas de una tabla).

Ahora, esto es incomodo, puesto que el contador de OID se avanzara en
forma global para toda la BD (en lugar de localmente para cada tabla,
como ocurre por ej. con una secuencia); por lo tanto tendras
"wraparound" mas pronto, y mas probabilidad de que se empiecen a repetir
los valores.

Lo otro es que cuando trates de insertar un registro y el contador haya
dado la vuelta, si te toca un numero que ya esta en esa tabla, la
operacion va a fallar, y tu programa va a tener que hacer un reintento.
Esto puede ser necesario hacerlo varias veces hasta que encuentres un
numero que no haya sido usado, lo cual peude resultar muy incomodo para
la aplicacion.

IMO es mucho mejor crear las tablas WITHOUT OIDS y ponerle a cada tabla
donde sea necesario un campo SERIAL que actue como llave primaria.

--
Alvaro Herrera (<alvherre[a]alvh.no-ip.org>)
"Ellos andaban todos desnudos como su madre los parió, y también las
mujeres,
aunque no vi más que una, harto moza, y todos los que yo vi eran todos
mancebos, que ninguno vi de edad de más de XXX años" (Cristóbal Colón)

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message josue 2005-08-24 18:23:00 Re: [pgsql-es-ayuda] RE: [pgsql-es-ayuda] Confiabilidad del OID como clave única
Previous Message Pablo Braulio 2005-08-24 17:20:30 ¿Como afecta el cambio de tipo de datos en una tabla?.