On Fri, Sep 23, 2022 at 2:28 PM Barry Kimelman <blkimel...@gmail.com> wrote:

>
> CREATE UNIQUE INDEX my_companies_id_unique ON
> my_companies(string_company_id) WHERE delete_timestamp IS NULL;
> CREATE UNIQUE INDEX my_companies_company_name_unique ON
> my_companies(company_name) WHERE delete_timestamp IS NULL;
>
> I issued the following sql insert in an attempt to use "on conflict" to
> update the
> duplicate column name
>
> insert into my_companies
> (second_id,string_company_id,company_name,person_name)
> values (1,'66','widgets','seller-toto')
> on conflict (company_name) do update set company_name =
> concat(company_name,'++',string_company_id);
>
>
> when I ran my sql statement I received the following error message
>
> bkimelman=# \i insert-companies-1c.sql
> psql:insert-companies-1c.sql:3: ERROR:  column reference "company_name" is
> ambiguous
> LINE 3: ...company_name) do update set company_name = concat(company_na...
>
> I tried fully qualifying the column names in the concat() function call,
> but all that did was get me a different error message
>

Which is the more interesting one since the ambiguous column name error you
did show has been resolved...


> What would be the proper format for the "on conflict" clause ?
>

I think that since your index is partial you need to modify your insert
command's on conflict clause to include a matching where clause.  (WHERE
index_predicate)

https://www.postgresql.org/docs/current/sql-insert.html

David J.

Reply via email to