Re: Converting to identity columns with domains on PK columns - Mailing list pgsql-general

From Adrian Klaver
Subject Re: Converting to identity columns with domains on PK columns
Date
Msg-id 2a86ab61-0bdb-9ac9-22a0-02d3402ec7bd@aklaver.com
Whole thread Raw
In response to Converting to identity columns with domains on PK columns  (PegoraroF10 <marcos@f10.com.br>)
Responses Re: Converting to identity columns with domains on PK columns  (PegoraroF10 <marcos@f10.com.br>)
List 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.klaver@aklaver.com



pgsql-general by date:

Previous
From: PegoraroF10
Date:
Subject: Converting to identity columns with domains on PK columns
Next
From: PegoraroF10
Date:
Subject: Re: Converting to identity columns with domains on PK columns