Re: Why does TRUNCATE require a special privilege?
Dominique Devienne <ddevienne@gmail.com>
From: Dominique Devienne <ddevienne@gmail.com>
To: Marcelo Fernandes <marcefern7@gmail.com>
Cc: pgsql-general@lists.postgresql.org
Date: 2026-01-16T10:32:41Z
Lists: pgsql-general
On Fri, Jan 16, 2026 at 10:13 AM Marcelo Fernandes <marcefern7@gmail.com> wrote: > From the documentation: > > TRUNCATE quickly removes all rows from a set of tables. It has the same > > effect as an unqualified DELETE on each table, but since it does not actually > > scan the tables it is faster. > > (...) > > You must have the TRUNCATE privilege on a table to truncate it. > > Granted that TRUNCATE and DELETE are different operations under the hood, but > why would the TRUNCATE operation require its own specific privilege rather than > say, use the same privilege as the DELETE operation? It's kinda obvious, when you read the notes. 1) Not MVCC-safe. 2) Do not fire TRIGGERs, thus breaking data-integrity 3) "Viral" in the presence of FKs, i.e. related tables must also be TRUNCATEd Just these 3 are HUGE departures from a DELETE. --DD