Re: Invoice increment

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

In response to

Browse pgsql-general by date

  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