Re: Using CTID system column as a "temporary" primary key

Dominique Devienne <ddevienne@gmail.com>

From: Dominique Devienne <ddevienne@gmail.com>
To: Francisco Olarte <folarte@peoplecall.com>
Cc: Adrian Klaver <adrian.klaver@aklaver.com>, Sebastien Flaesch <sebastien.flaesch@4js.com>, Kirk Wolak <wolakk@gmail.com>, Geoff Winkless <pgsqladmin@geoff.dj>, pgsql-general <pgsql-general@lists.postgresql.org>
Date: 2023-03-30T12:32:57Z
Lists: pgsql-general
On Thu, Mar 30, 2023 at 11:42 AM Francisco Olarte <folarte@peoplecall.com>
wrote:

> On Thu, 30 Mar 2023 at 10:01, Dominique Devienne <ddevienne@gmail.com>
> wrote:
> > BTW, default and 0 are not the same thing. You cannot bind "default" in
> place of
> > an integer-valued prepared-statement placeholder, in a binary mode
> insert. So it is
> > definitely not the same thing.
>
> IMNSHO if you need to select between default and explicit in an insert
> via binding you have a design problem, and down this path lies madness.
>

I fail to see that myself, sorry. You can bind NULL, you can bind values,
so why
wouldn't you be able to bind DEFAULT too? I see that more as a failing to
the
binding API myself :)

But I guess it can be worked around with something like
`... values(coalesce($1, default), ..)`
and abusing NULL to mean DEFAULT on a case-by-case bases.
Assuming default can be used in this way (didn't try), of course.