Identity columns, DEFAULT keyword and multi-row inserts - Mailing list pgsql-general

From Thomas Kellerer
Subject Identity columns, DEFAULT keyword and multi-row inserts
Date
Msg-id ae6d3563-f3c9-ce42-1f2c-32934e844505@gmx.net
Whole thread Raw
Responses RE: Identity columns, DEFAULT keyword and multi-row inserts
Re: Identity columns, DEFAULT keyword and multi-row inserts
List pgsql-general
Hello,

assume the following table:

    create table test 
    (
      id integer not null  generated always as identity,
      data integer not null 
    );

The following insert works fine:

    insert into test (id, data)
    values (default,1);


However, a multi-row insert like the following:

    insert into test (id, data)
    values 
      (default,1),
      (default,2);


fails with: 

    ERROR: cannot insert into column "id"
      Detail: Column "id" is an identity column defined as GENERATED ALWAYS.
      Hint: Use OVERRIDING SYSTEM VALUE to override.


My question is: 

* If DEFAULT is not allowed for identity columns, then why does the single-row insert work? 
* If DEFAULT _is_ allowed, then why does the multi-row insert fail? 

The above happens with Postgres 10,11 and 12

Regards
Thomas



pgsql-general by date:

Previous
From: Rene Romero Benavides
Date:
Subject: Re: Tuple concurrency issue in large objects
Next
From: Dan shmidt
Date:
Subject: Logical Replication of Multiple Schema Versions