Re: pgsql-es-ayuda

From: Jaime Casanova <systemguards(at)gmail(dot)com>
To: Manuel Sugawara <masm(at)fciencias(dot)unam(dot)mx>
Cc: Victor <victor(dot)perez(at)e-evolution(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: pgsql-es-ayuda
Date: 2005-06-29 16:19:49
Message-ID: c2d9e70e0506290919334d0495@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On 6/29/05, Manuel Sugawara <masm(at)fciencias(dot)unam(dot)mx> wrote:
> Victor <victor(dot)perez(at)e-evolution(dot)com> writes:
>
> > es lo que me te mìa, pero bueno veamos que se puede hacer, este es la
> > sentencia SQL:
> >
> > UPDATE I_BPartner i SET C_BPartner_Location_ID=(SELECT
> C_BPartner_Location_ID
> > FROM C_BPartner_Location bpl INNER JOIN C_Location l ON
> > (bpl.C_Location_ID=l.C_Location_ID)
> > WHERE i.C_BPartner_ID=bpl.C_BPartner_ID AND
> bpl.AD_Client_ID=i.AD_Client_ID
> > AND DUMP(i.Address1)=DUMP(l.Address1) AND
> DUMP(i.Address2)=DUMP(l.Address2)
> > AND DUMP(i.City)=DUMP(l.City) AND DUMP(i.Postal)=DUMP(l.Postal) AND
> > DUMP(i.Postal_Add)=DUMP(l.Postal_Add) AND
> > DUMP(i.C_Region_ID)=DUMP(l.C_Region_ID) AND
> > DUMP(i.C_Country_ID)=DUMP(l.C_Country_ID))
> > WHERE C_BPartner_ID IS NOT NULL AND C_BPartner_Location_ID IS NULL AND
> > I_IsImported='N'
> >
> > lo que entiendo que hace es comparar dos valores de distintas tablas
> > convirtiendolos en hexadecimal de esa manera identifica que sean
> > exactos.
>
> La comparación me parece un tanto ociosa por no decir perfectamente
> inútil. Como cambiaría la sentencia si en vez de decir:
>
> DUMP(i.Address1)=DUMP(l.Address1)
>
> simplemente dices:
>
> i.Address1 = l.Address1
>
> Si entendí bien lo que hace dump, no cambiaría. Por lo tanto quita
> todos los dump's y estas listo. La pregunta es: ¿por qué no lo
> hicieron así originalmente?. Probablemente que hay algo aqui que no
> estamos viendo :-(.
>

Segun yo entendi, DUMP no solo te saca el contenido sino tambien el
tamaño del campo y el tipo de dato. Asi que lo que el select esta
comprobando es que sea exactamente el mismo tipo de dato y longitud de
campo, a mas del contenido.

Aunque por lo general los FK's van a coincidir en eso veras bases en
la que un int4 esta haciendo referencia a un campo en otra tabla cuyo
PK es un int2.

No me parece razonable, IMHO, hacer eso ya que el constraint se
establece sobre los datos no la longitud del campo o el tipo de dato.

--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)

In response to

  • Re: at 2005-06-29 16:02:07 from Manuel Sugawara

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Hugo Gamarra 2005-06-29 16:32:20 RE:
Previous Message Manuel Sugawara 2005-06-29 16:17:25 Re: