[Pgsql-ayuda] Re: [Pgsql-ayuda] ¿Cómo se come esto?

From: Antonio Mármol Albert <toni(at)infurma(dot)combios(dot)es>
To: pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
Subject: [Pgsql-ayuda] Re: [Pgsql-ayuda] ¿Cómo se come esto?
Date: 2002-11-27 17:42:56
Message-ID: 20021127184256.B2011@infurma.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El miércoles 27 de noviembre de 2002 (13:11), Cesar Villanueva escribió:

> Hola *
>
> A mí lo que me parece es que el id de 'Muebles Celda' _no_ es
> '21293'; quizá es '21293 ' o bien ' 21293'. Es decir, que hay un espacio (u
> otro caracter invisible antes o después del número en sí.
>
> Algo como
>
> SELECT id, marca FROM empresas WHERE id LIKE '%2129%';
>
> y producir algio como:
>
> id | marca
> -------+-------
> (...)
> 21291 | GOWAS
> 21292 | GOWAS
> 21293 | Muebles Celda
> 21294 |
> (..)

habitat=# SELECT id, marca FROM empresas WHERE id LIKE '%2129%';
id | marca
-------+----------------
2129 |
12129 |
21293 | Muebles Celda
21295 |
21294 |
21297 | mueble moderno
21298 |
22129 |
21291 | GOWAS
21292 | GOWAS
21299 | CONSTRUCTIVA
(11 rows)

Así, SÍ que sale. ¿Por qué así sí? No lo entiendo... id es un campo entero
(tipo SERIAL). Puedo arreglar ese registro, pero... ¿cuántos registros
tendré igual que es? Puede ser un problema. :/

El número de id se obtiene de una secuencia. En ningún momento se introduce
manualmente.

Gracias a todos por la atención prestada.

Y ahora otra... ¿cómo prevenir eso? :)

> Si es así entonces el problema está en la rutina que ingresa el número de id
> (es raro si es una secuencia o SERIAL) pero si es introducida por el usuario
> estonces debes validar que no se ingresen caracteres extraños...
>
> ¿Cómo _corregir_ el registro?
>
> Prueba hacer un UPDATE de la siguiente forma:
>
> UPDATE empresas set id='21293' where marca ='Muebles Celda';
>
> (por tu llamada anterior estamos seguros que hay una sola instancia de
> "Muebles Celda"; caso contrario debes usar el oid.
>
> SELECT oid, marca FROM empresas WHERE marca = 'Muebles Celda';
> oid | marca
> -------+---------------
> 55555 | Muebles Celda
>
> y actualizas
>
> UPDATE empresas set id='21293' where oid ='55555';
>
>
> El Miércoles 27 Noviembre 2002 12:20, Antonio Mármol Albert escribió:
> > SELECT id, marca FROM empresas WHERE id > '21290' AND id < '21295';
> > id | marca
> > -------+-------
> > 21291 | GOWAS
> > 21292 | GOWAS
> > 21294 |
> > (3 rows)
> >
> > Pero...
> >
> > SELECT id, marca FROM empresas WHERE marca = 'Muebles Celda';
> > id | marca
> > -------+---------------
> > 21293 | Muebles Celda
> > (1 row)
> >
> > Al buscar por "id" no me sale ese registro. El campo "id" es la clave
> > primaria de la tabla.
> >
> > Ya me di cuenta de esto otra vez (fue de casualidad, un error que vi en una
> > pagina de php) y no le di importancia. Hoy es la segunda vez que veo esto.
> >
> > No han habido cortes de luz ni cierres bruscos de la base de datos. Por lo
> > que no deberia estar corrupta.
> >
> > Sin embargo...
> >
> > SELECT id, marca FROM empresas WHERE id='21292';
> > id | marca
> > -------+-------
> > 21292 | GOWAS
> > (1 row)
> >
> > Al parecer solo ocurre en X registros...
> >
> > ¿Puede ser un bug?

--
Antonio Mármol Albert ( toni(at)infurma(dot)es )
http://www.infurma.es

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Antonio Mármol Albert 2002-11-27 17:46:43 [Pgsql-ayuda] Re: [Pgsql-ayuda] ¿Cómo se come esto?
Previous Message J. Mario Oroz 2002-11-27 17:38:10 [Pgsql-ayuda] Re: [Pgsql-ayuda] ¿Cómo se come esto?