Re: Best way to change values of a primary key referenced by many tables

From: Iuri Sampaio <iuri(dot)sampaio(at)gmail(dot)com>
To: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>, Andreas Joseph Krogh <andreas(at)visena(dot)com>, pgsql-sql <pgsql-sql(at)lists(dot)postgresql(dot)org>
Subject: Re: Best way to change values of a primary key referenced by many tables
Date: 2020-10-21 22:11:57
Message-ID: 83795111-25CB-470F-B9AF-3271123EF282@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Andreas,
if there’s a chance to redesign your datamodel from scratch, I’d go benchmarking one of the best Framework I’ve ever seen, for PostgreSQL object datamodel designing. OpenACS / Prject-Open

http://www.project-open.com/en/list-data-model <http://www.project-open.com/en/list-data-model>

I’d recreate the datamodel following the references available here
http://www.project-open.com/en/list-data-model <http://www.project-open.com/en/list-data-model>

For object design:
https://openacs.org/doc/object-system-design <https://openacs.org/doc/object-system-design>

This datamodel is based on OpenACS, a robust and high scalable community based system
https://openacs.org <https://openacs.org/>

Best wishes,
I

> On Rab. I 5, 1442 AH, at 18:25, David G. Johnston <david(dot)g(dot)johnston(at)gmail(dot)com> wrote:
>
> On Wed, Oct 21, 2020 at 1:27 PM Andreas Joseph Krogh <andreas(at)visena(dot)com <mailto:andreas(at)visena(dot)com>> wrote:
> Now - I want to refactor so that my_user.id has the same value as my_person.entity_id
>
> Updating the value of my_user.id sounds simple, but how do I do that, and update all other tables pointing to it with this new value, with as little effort as possible, ie. don't have to ALTER/UPDATE every table having an FK to my_user.id?
>
> Given those constraints I'd suggest that your problem has no solution.
>
>
> Not that some FKs are DEFERRABLE, others have "ON DELETE", and the requirement is to not mess with that.
>
> So - I'm basically looking for (I think) a way to add "ON UPDATE CASCADE" to all columns referencing it, update the values and then removing all "ON UPDATE CASCADE" on the referencing columns.
>
> While ALTER TABLE can alter a FK constraint it only can change the deferrability property, not the trigger properties.
>
>
> Appreciate suggestions, thanks.
>
>
> Say no.
>
> David J.

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Yambu 2020-11-12 07:50:03 Identify columns that need indexes
Previous Message David G. Johnston 2020-10-21 21:25:41 Re: Best way to change values of a primary key referenced by many tables