| 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: | Whole Thread | Raw Message | 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 |