Re: BUG #17085: Should be able to create an index without referential checking when ON DELETE NO ACTION

From: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
To: porton(at)narod(dot)ru, PostgreSQL mailing lists <pgsql-bugs(at)lists(dot)postgresql(dot)org>
Subject: Re: BUG #17085: Should be able to create an index without referential checking when ON DELETE NO ACTION
Date: 2021-07-06 23:32:07
Message-ID: CAKFQuwbiU1kswK7fkKf9k=qT-_hTwhbNyWOoy-s_1j55cx=Z7w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Tue, Jul 6, 2021 at 3:29 PM PG Bug reporting form <noreply(at)postgresql(dot)org>
wrote:

> The following bug has been logged on the website:
>
> Bug reference: 17085
> Logged by: Victor Porton
> Email address: porton(at)narod(dot)ru
> PostgreSQL version: 13.3
> Operating system: Linux
> Description:
>
> When there is either ON DELETE NO ACTION or ON UPDATE NO ACTION for a
> foreign key, referential integrity is not preserved anyway.
>

Yes, it is preserved, the delete or update is prevented.

> Therefore in this case ALTER TABLE should be able to create an index

without referential checking.
>

Indexes are single table only and thus do not care about referential
integrity or perform any referential checking.

>
> It is especially useful for removing superfluous data like:
>
> delete from tags using transactions where not exists(select * from
> transactions where tags.tx_id=transactions.id);
>
> I've got into a trouble: This command runs too long because of no foreign
> key, but I can't create a foreign key because this command didn't run yet
> to
> make referntial integrity working.
>
>
Foreign keys likewise don't affect performance...they are strictly
concerned with data updates. Now, a FK column is not indexed by default so
depending on how queries are written, and the data in for the FK, there may
be a performance gain from adding an index.

All that is to say if you want to turn a non-FK column into an FK you may
find it helpful to add the index first, fix the data, then add the FK.

David J.

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Pantelis Theodosiou 2021-07-07 00:04:52 Re: BUG #17085: Should be able to create an index without referential checking when ON DELETE NO ACTION
Previous Message PG Bug reporting form 2021-07-06 21:03:37 BUG #17085: Should be able to create an index without referential checking when ON DELETE NO ACTION