Search Postgresql Archives

Re: Converting to identity columns with domains on PK columns

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 7/4/19 1:27 PM, Adrian Klaver wrote:
On 7/4/19 1:03 PM, PegoraroF10 wrote:
ok, thanks for the explanation but ... I cannot add a field and move data,
constraints, triggers, identity to it because my pk field will be
repositioned to the last field on that table and I have lots of other codes
which point to pk as the first field on every table.

I stay away from using the index position of field for this reason.


So, there is a way to convert that field to a identity field ?

See my second option in previous post.

Or, old school identity column:):

create sequence id_seq owned by mytable.id;

alter table mytable alter column id set default nextval('id_seq');

\d mytable
                          Table "public.mytable"
    Column    | Type | Collation | Nullable |           Default
-------------+------+-----------+----------+-----------------------------
  id          | i32  |           | not null | nextval('id_seq'::regclass)
  description | t50  |           |          |
Indexes:
     "mytable_pkey" PRIMARY KEY, btree (id)



I know this worked, but then I got to wondering why?

Found the answer in sequence.c(init_params) in the if (as_type != NULL) section. When creating a sequence you can specify AS data_type as long as the type is one of smallint, integer or bigint. If data_type is not specified then the default is bigint. If I am following correctly in tablecommands.c when you create an IDENTITY column it uses the type it gets from the column for the AS data_type. In your case that would be a domain type which is != to the base types above.



--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux