Обсуждение: integer column to serial "type"
Hello,
there is some way to get and old integer primary key column to show the "type"
serial at table description?
I had a table like this:
CREATE TABLE test
(
test_id integer NOT NULL,
CONSTRAINT test_pkey PRIMARY KEY (test_id),
);
that i would like to see as:
CREATE TABLE test
(
test_id serial NOT NULL,
CONSTRAINT test_pkey PRIMARY KEY (test_id),
);
i have tried with:
CREATE SEQUENCE test_test_id_seq;
ALTER TABLE test ALTER COLUMN test_id SET DEFAULT
nextval('test_test_id_seq'::regclass);
ALTER SEQUENCE test_test_id_seq OWNED BY test.test_id;
and now i have this table:
CREATE TABLE test
(
test_id integer NOT NULL DEFAULT nextval('test_test_id_seq'::regclass),
CONSTRAINT test_pkey PRIMARY KEY (test_id),
);
i know this works the same as serial but do i have some way to get this table to
show me test_id column as "serial" type without have to recreate the table and
restore original rows?
Regards,
Miguel Angel.
Linos <info@linos.es> writes:
> there is some way to get and old integer primary key column to show the "type"
> serial at table description?
No, because there is no such type. "serial" is just a convenient macro
that you can use in CREATE TABLE; it's not a real type.
regards, tom lane
On 25/10/12 17:39, Tom Lane wrote:
> Linos <info@linos.es> writes:
>> there is some way to get and old integer primary key column to show the "type"
>> serial at table description?
>
> No, because there is no such type. "serial" is just a convenient macro
> that you can use in CREATE TABLE; it's not a real type.
>
> regards, tom lane
>
>
Yeah, i knew it's not a real type and supposed the outcome, i only wanted to be
sure, i find much more pleasant to see:
test_id serial NOT NULL,
than
test_id integer NOT NULL DEFAULT nextval('test_test_id_seq'::regclass),
but i can live with it, thanks!
Regards,
Miguel Angel.
On 25/10/2012 16:32, Linos wrote: > Hello, > there is some way to get and old integer primary key column to show the "type" > serial at table description? > > I had a table like this: > > CREATE TABLE test > ( > test_id integer NOT NULL, > CONSTRAINT test_pkey PRIMARY KEY (test_id), > ); > > > that i would like to see as: > > CREATE TABLE test > ( > test_id serial NOT NULL, > CONSTRAINT test_pkey PRIMARY KEY (test_id), > ); PgAdmin manages it somehow, because it's able to show columns as "serial"... maybe it infers it from the ownership dependency between the sequence and the column. Ray. -- Raymond O'Donnell :: Galway :: Ireland rod@iol.ie
On 25/10/12 19:45, Raymond O'Donnell wrote: > On 25/10/2012 16:32, Linos wrote: >> Hello, >> there is some way to get and old integer primary key column to show the "type" >> serial at table description? >> >> I had a table like this: >> >> CREATE TABLE test >> ( >> test_id integer NOT NULL, >> CONSTRAINT test_pkey PRIMARY KEY (test_id), >> ); >> >> >> that i would like to see as: >> >> CREATE TABLE test >> ( >> test_id serial NOT NULL, >> CONSTRAINT test_pkey PRIMARY KEY (test_id), >> ); > > > PgAdmin manages it somehow, because it's able to show columns as > "serial"... maybe it infers it from the ownership dependency between the > sequence and the column. > > Ray. > > Yeah i was referring to PgAdmin, didn't notice that columns shown as serial in PgAdmin are shown like integer nextval(sequence) in \d from psql, i will try to ask in PgAdmin mailing list how they detect a "serial" column because i have tried to replicate the exact setup (ownership included) of one and it doesn't works. Regards, Miguel Angel.