[Pgsql-ayuda] columna NOT NULL

Gunnar Wolf gwolf@gwolf.cx
Wed, 30 Apr 2003 18:39:31 -0500


> saludos.
> erodriguez-#alter table t
> erodriguez-#add contraint c_pk primary key (c);
> ALTER
> erodriguez-# add constraint c_pk primary key (c);
> ERROR: Existing attribute "c" cannot be a PRIMARY KEY because it is not marked
> NOT NULL
>  
> y efectivamente la columna no esta marcada como NOT NULL, lo que tiene es un
> constraint
>  
> erodriguez-# \d t
>                  Table "t"
>  Column |         Type         | Modifiers
> --------+----------------------+-----------
>  c      | character varying(1) |
> Check constraints: "c_not_null" NULL::bool

Oka... La pones fácil así :-) Te faltaba indicarle que no permitiera
nulos. Vamos a ver, hice lo siguiente:

gwolf=# CREATE TEMP TABLE asdf (id integer, descr text);
CREATE TABLE
gwolf=# \d asdf
    Table "pg_temp_1.asdf"
 Column |  Type   | Modifiers 
--------+---------+-----------
 id     | integer | 
 descr  | text    | 
gwolf=# ALTER TABLE asdf ALTER COLUMN id SET NOT NULL;
ALTER TABLE
gwolf=# ALTER TABLE asdf ADD CONSTRAINT c_pk PRIMARY KEY (id);
NOTICE:  ALTER TABLE / ADD PRIMARY KEY will create implicit index 'c_pk' for table 'asdf'
ALTER TABLE
gwolf=# \d asdf 
    Table "pg_temp_1.asdf"
 Column |  Type   | Modifiers 
--------+---------+-----------
 id     | integer | not null
 descr  | text    | 
Indexes: c_pk primary key btree (id)

y ya quedó :-)

> el comando SET LINESIZE 5000, lo que hace es que cuando el SELECT necesita
> presentar los datos mas alla del borde derecho se le puede dar scroll y no te
> salen las cosas como:
>  (...)

Bueno, eso se lo dejo ya a alguien más ;-) Sin embargo, sí puedo
comentar algo: Esto no es algo que cambiarás sobre Postgres, sino que
sobre el cliente que estás usando (psql). Puedes asomarte a su fuente en
el peor de los casos, está bastante claro.

Saludos,

-- 
Gunnar Wolf - gwolf@gwolf.cx - (+52-55)5630-9700 ext. 1366
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973  F800 D80E F35A 8BB5 27AF