Re: UPDATE column without FK fires other FK triggers constraint check

From: Luca Looz <luca(dot)looz92(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: UPDATE column without FK fires other FK triggers constraint check
Date: 2017-07-19 21:13:43
Message-ID: CAHXaXTxO72TwuA6Pg07oQ2iuWKXX8OjWE=BPqFZ7QXDz5htjFw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Thanks for the explanation!
Can these checks be implemented or the data needed is not there and adding
it will only add an overhead for the majority of use cases?

2017-07-19 20:42 GMT+02:00 Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>:

> Luca Looz <luca(dot)looz92(at)gmail(dot)com> writes:
> > After some tests it seems that this happens when the same row is covered
> by
> > more than 1 update in the same transaction even without any change.
> > Is this an expected behavior? Why it happens?
>
> Yes, see comment in RI_FKey_fk_upd_check_required:
>
> * If the original row was inserted by our own transaction, we
> * must fire the trigger whether or not the keys are equal.
> This
> * is because our UPDATE will invalidate the INSERT so that the
> * INSERT RI trigger will not do anything; so we had better do
> the
> * UPDATE check. (We could skip this if we knew the INSERT
> * trigger already fired, but there is no easy way to know
> that.)
>
> Although this is talking about the BEGIN; INSERT; UPDATE; COMMIT case,
> the code has no way to tell that apart from BEGIN; UPDATE; UPDATE; COMMIT.
>
> regards, tom lane
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2017-07-19 21:52:44 Re: Why would log_lock_waits affect a query plan?
Previous Message Evan Martin 2017-07-19 20:43:03 Why would log_lock_waits affect a query plan?