From: | "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> |
---|---|
To: | Melvin Davidson <melvin6925(at)gmail(dot)com> |
Cc: | Steven Roth <steve(at)rothskeller(dot)net>, "pgsql-general(at)postgresql(dot)org >> PG-General Mailing List" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: UPSERT on a view |
Date: | 2018-03-13 14:02:29 |
Message-ID: | CAKFQuwbx6XTYmvQtpAU=h3ufMHAYnzp4fH6a1Dhx2YXvrZAr5A@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Tue, Mar 13, 2018 at 6:47 AM, Melvin Davidson <melvin6925(at)gmail(dot)com>
wrote:
> On Mon, Mar 12, 2018 at 2:26 PM, Steven Roth <steve(at)rothskeller(dot)net>
> wrote:
>
>> This code raises the error 'foo', even though the insert says DO NOTHING
>> and the error type is unique_violation. Why?
>>
>> More generally: how can one write trigger functions for a view (that is
>> not automatically updatable), such that INSERT ... ON CONFLICT DO UPDATE
>> will work with the correct semantics? What can one do in the INSERT
>> trigger that will cause PostgreSQL to execute the caller-supplied UPDATE
>> clause?
>>
>>
Sorry, not sure...
> >CREATE TRIGGER vtest_insert INSTEAD OF INSERT ON *vtest*
> > FOR EACH ROW EXECUTE PROCEDURE vtest_insert();
> >*INSERT INTO vtest *VALUES (1) ON CONFLICT DO NOTHING;
>
>
>
> *Your problem is that A. TRIGGERS are meant for TABLES, not views*
>
> *and *
>
> *B. You CANNOT insert into a VIEW.*
>
>
Your knowledge is this area is out-of-date...you should read the page you
linked to again.
I'll admit "table_name" probably could be labelled "relation_name"...though
that is then too broad.
David J.
From | Date | Subject | |
---|---|---|---|
Next Message | Melvin Davidson | 2018-03-13 14:09:07 | Re: UPSERT on a view |
Previous Message | Tom Lane | 2018-03-13 13:58:31 | Re: Question on corruption (PostgreSQL 9.6.1) |