Re: Converting to identity columns with domains on PK columns

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: PegoraroF10 <marcos(at)f10(dot)com(dot)br>, pgsql-general(at)postgresql(dot)org
Subject: Re: Converting to identity columns with domains on PK columns
Date: 2019-07-04 19:53:59
Message-ID: 2a86ab61-0bdb-9ac9-22a0-02d3402ec7bd@aklaver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 7/4/19 12:41 PM, PegoraroF10 wrote:
> Domains on Postgres are really strange to me. Am I creating a domain which is
> exactly equal to integer, right ?
>
> create domain i32 as integer;
> create domain T50 as varchar(50);
>
> Create table MyTable(
> ID I32 not null primary key,
> Description T50);
>
> Then, after inserts and updates done to that table, I want to convert that
> primary key to a identity column.
>
> alter table MyTable alter ID add generated always as identity;
>
> ERROR: identity column type must be smallint, integer, or bigint
>
> So, What do I need do to create this identity column ?
> Why Postgres consider different I32 and integer ?

Because one(integer) is a base type and the other is a domain over a
base type(I32). Domains can have restrictions over what is accepted so I
can see why they would not be good candidates for a sequence(identity).

Solutions:

1) Create a new integer column for the identity.

2) alter table MyTable alter ID type integer;

alter table MyTable alter ID add generated always as identity;

\d 'MyTable'

Table "public.mytable"

Column | Type | Collation | Nullable | Default

-------------+---------+-----------+----------+------------------------------

id | integer | | not null | generated always as
identity

description | t50 | | |

>
>
>
> --
> Sent from: http://www.postgresql-archive.org/PostgreSQL-general-f1843780.html
>
>
>

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message PegoraroF10 2019-07-04 20:03:50 Re: Converting to identity columns with domains on PK columns
Previous Message PegoraroF10 2019-07-04 19:41:27 Converting to identity columns with domains on PK columns