PostgreSQL – Truncate Table with Cascade

cascadepostgresqltruncate

When running:

TRUNCATE TABLE YYYYY RESTART IDENTITY

I am seeing this error message:

ERROR:  cannot truncate a table referenced in a foreign key constraint
DETAIL:  Table "XXXXX" references "YYYYY".
HINT:  Truncate table "XXXXX" at the same time, or use TRUNCATE ... CASCADE.

Of the two suggestions in HINT:

  1. Using TRUNCATE ... CASCADE makes sense, and works, but is less explicit because one must inspect YYYYY to see where the cascade goes. That makes me want to try the other option:

  2. Truncate table "XXXXX" at the same time, but my question:

    What does it mean to truncate a table at the same time?


I tried adding a TRUNCATE XXXXX... (and wrapping them both in a BEGIN / COMMIT), but that yields the same error.

Best Answer

  1. What does it mean to truncate a table at the same time?

It means with the same statement. You can truncate more than one tables:

TRUNCATE xxxxx, yyyyy RESTART IDENTITY ;

More details in Postgres docs: TRUNCATE.