Re: Do foreign key triggers get ran even if the key's value doesn't change?

From: Jeff Janes <jeff(dot)janes(at)gmail(dot)com>
To: Joe Van Dyk <joe(at)tanga(dot)com>
Cc: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Do foreign key triggers get ran even if the key's value doesn't change?
Date: 2014-05-21 21:01:28
Message-ID: CAMkU=1ywjnX45p9X4LM4Kz_9wwyzj5nTDgiXqYwnop2NJdAfVA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Wed, May 21, 2014 at 1:11 PM, Joe Van Dyk <joe(at)tanga(dot)com> wrote:

> I came across http://bonesmoses.org/2014/05/14/foreign-keys-are-not-free/
> which seems to indicate so.
>
> When I run the following test script, having 50 foreign keys takes
> about twice as long to do the update. Is there a reason for that?
> Seems like the RI triggers wouldn't have to run on updates if the
> value doesn't change.
>

That's kind of a question of definitions. Perhaps the trigger itself
doesn't need to run, but the code that decides whether the trigger needs to
run does need to run. Where do you draw the line around what is the
trigger proper and what is just infrastructure?

However you wish to define it, change your function so that it actually
does change the key field, and see how much slower that is than the
behavior where you update the row without updating the key.

Cheers,

Jeff

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Laurentius Purba 2014-05-21 22:02:48 Question regarding DEALLOCATE pdo_stmt_00000001
Previous Message Raymond O'Donnell 2014-05-21 20:40:56 Re: postgres 9.2.4 - ERROR: invalid input syntax for type numeric: ""