From: | Vik Fearing <vik(at)postgresfriends(dot)org> |
---|---|
To: | Søren Frisk <soeren(dot)frisk(at)gmail(dot)com>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: Invoice increment |
Date: | 2020-02-26 14:07:31 |
Message-ID: | 5c11552a-615a-4cac-c886-7910d421bd4b@postgresfriends.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 26/02/2020 10:27, Vik Fearing wrote:
> WITH
> u (invoice_number) AS (
> UPDATE invoice_numbers
> SET invoice_number = invoice_number + 1
> WHERE country = $1
> RETURNING invoice_number
> ),
> i (invoice_number) AS (
> INSERT INTO invoice_numbers (country, invoice_number)
> SELECT $1, 1
> WHERE NOT EXISTS (TABLE u)
> ON CONFLICT (country) DO
> UPDATE SET invoice_number = invoice_numbers.invoice_number + 1
> RETURNING invoice_number
> )
> TABLE u UNION ALL TABLE i;
Actually this is probably some premature optimization that you don't
need. Just the insert should be good enough.
INSERT INTO invoice_numbers (country, invoice_number)
VALUES ($1, 1)
ON CONFLICT (country) DO
UPDATE SET invoice_number = invoice_numbers.invoice_number + 1
RETURNING invoice_number;
--
Vik Fearing
From | Date | Subject | |
---|---|---|---|
Next Message | rainer | 2020-02-26 14:11:38 | How to install check_postgres on CentOS 8? |
Previous Message | Søren Frisk | 2020-02-26 10:52:13 | Re: Invoice increment |