From: | Thomas Kellerer <spam_eater(at)gmx(dot)net> |
---|---|
To: | pgsql-general(at)lists(dot)postgresql(dot)org |
Subject: | Re: Identity columns, DEFAULT keyword and multi-row inserts |
Date: | 2019-12-10 08:15:11 |
Message-ID: | 6615c093-b124-d680-e489-539ed98cf18b@gmx.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Patrick FICHE schrieb am 10.12.2019 um 08:56:
>> -----Original Message-----
>> From: Thomas Kellerer <spam_eater(at)gmx(dot)net>
>>
>> assume the following table:
>>
>> create table test
>> (
>> id integer not null generated always as identity,
>> data integer not null
>> );
>>
>> 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?
>
>
> I agree that it does not seem very consistent.
>
> But is there any specific reason why are you using DEFAULT ?
>
> If you want / have to specify DEFAULT, then you should probably
> create your identity as "generated by default".
I don't really need (or use) it, I just stumbled upon this: https://stackoverflow.com/questions/59261048
And I think if the single row insert is allowed the multi-row should be as well.
Not sure if this is a bug - and if it is, which one is the bug: the failing statement or the working one?
From | Date | Subject | |
---|---|---|---|
Next Message | Andreas Kretschmer | 2019-12-10 08:53:55 | Re: Upgrade PostgreSQL 9.6 to 10.6 |
Previous Message | Patrick FICHE | 2019-12-10 07:56:55 | RE: Identity columns, DEFAULT keyword and multi-row inserts |