Skip site navigation (1) Skip section navigation (2)

Re: indice, unicidad

From: Bruno Unna <bruno(at)iac(dot)com(dot)mx>
To: pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
Subject: Re: indice, unicidad
Date: 1998-05-20 22:07:44
Message-ID: 35635430.5F9F14D@iac.com.mx (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Norma Cordero Sanchez wrote:
> 
>   Hola, que tal.
> 
> Tengo una dudota: como puedo dar unicidad a una columna, sin tener
> que hacer un indice en ella? hasta donde he checado se que al crear un
> indice se puede tener la opcion de que sea unico tambien:
> 
> create [unique] index <indexname> on <class_name> [using <access_method>]
> ( <attr1> [<type_class1>] [,...] | <funcname>(<attr1>,...) [<type_class>]
> );
> 
> pero como le hago si solo quiero que sean "unicos" los valores, pero no
> indexar?

Lo único que se me ocurre por el momento es el uso de una característica 
llamada 'constraint' durante la creación de la tabla. Sintaxis:
create table <class_name>
        (<attr1> <type1> [default <expression>] [not null] [,...])
        [inherits (<class_name1>,...<class_nameN>)
        [[constraint <name>] check <condition> [,...] ]
;
pero eso tiene dos problemas:
a) es ineficiente; cada inserción/actualización implica la revisión 
   de la condicion por parte del manejador;
b) no funciona (al menos, yo no he logrado sacar a psql de 
   'ERROR:  parser: parse error at or near "constraint"' cuando he 
   querido jugar con los constraints).   :)

En todo caso, yo quisiera preguntarte, Norma: ¿qué tienen de malo 
los índices? Puedes crear uno implícitamente al crear la tabla, 
y desentenderte de él:
create table alumnos 
    (cuenta int4, nombre char(60), primary key (cuenta));
lo cual implica automáticamente la unicidad de 'cuenta', 
así como su no-nulidad.

Suerte, saludos.

P.D.: si alguien averigua qué estoy haciendo mal con los 
constraints, le voy a agradecer mucho que me informe. :)
-- 
   +------------------------------------------------------+
   |                                           Bruno Unna |
   | bruno(at)sac(dot)com(dot)mx    Pub.key available    ICQ:1858580 |
   +------------------------------------------------------+

In response to

Responses

pgsql-es-ayuda by date

Next:From: Bruno UnnaDate: 1998-05-20 22:16:03
Subject: Re: FATAL: StreamServerPort: bind() failed: errno=13
Previous:From: Norma Cordero SanchezDate: 1998-05-20 21:26:29
Subject: indice, unicidad

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group