Re: TRUNCATE ONLY with foreign keys and triggers disabled

From: Dimitrios Apostolou <jimis(at)gmx(dot)net>
To: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
Cc: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: TRUNCATE ONLY with foreign keys and triggers disabled
Date: 2025-04-14 15:20:36
Message-ID: 376367c8-1baf-3e64-9363-15fa24265b6c@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Mon, 14 Apr 2025, Adrian Klaver wrote:

> On 4/14/25 08:07, Laurenz Albe wrote:
>> On Mon, 2025-04-14 at 17:05 +0200, Dimitrios Apostolou wrote:
>>> I meant the *referencing* table has just been
>>> populated. I'm trying to delete the *referenced* table and I get the
>>> error.
>>
>> That would break the foreign key constraint, right?
>> PostgreSQL cannot allow that.
>
> I believe the OP is disabling all triggers including system ones if I follow
> correctly and possibly running a foul of;
>
> https://www.postgresql.org/docs/current/sql-altertable.html
>
> " Disabling or enabling internally generated constraint triggers requires
> superuser privileges; it should be done with caution since of course the
> integrity of the constraint cannot be guaranteed if the triggers are not
> executed."

Exactly that. I learned this from pg_restore --disable-triggers, as a way
to speed-up insertion.

Since triggers are disabled, I assumed that postgresql shouldn't care
about referential integrity in TRUNCATE.

Dimitris

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Dominique Devienne 2025-04-14 15:21:40 CREATE SCHEMA AUTHORIZATION and ALTER SCHEMA OWNER TO
Previous Message Adrian Klaver 2025-04-14 15:13:56 Re: TRUNCATE ONLY with foreign keys and triggers disabled