Hi Is there any way to tell if a conflicting row in an multi-line INSERT used the DEFAULT directive?
I would like to be able to upsert a bunch of rows and only UPDATE the conflicting rows where the value set was not new - the way I do this for NULLable columns is to just write NULL in the INSERT subclause for the columns that I don't want to set and use SET column=CASE WHEN EXCLUDED.column IS NULL THEN tablename.column ELSE EXCLUDED.column END (or COALESCE(), if you prefer); however for NOT NULL columns with a default, I don't know how I can do this. I was hoping for something like an "IS DEFAULT" test but that didn't work. I can't just test for the default value itself because there might be times when I want to update the value to the default, overriding an existing value. I also can't simply exclude the column from the insert because for some rows I _will_ be setting the value. Am I missing something obvious, or am I going to have to change the column to accept NULLs in order to make this work? Thanks Geoff