Таблица усечения Postgresql с ограничением внешнего ключа - PullRequest
0 голосов
/ 21 июня 2019

В настоящее время я пытаюсь обрезать таблицы, которые имеют ограничение внешнего ключа на Postgresql 11.3.

Я пытался сделать это

BEGIN; 
SET CONSTRAINTS ALL DEFERRED;
TRUNCATE tableA;
COMMIT;

, но получил ошибку

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

Разве SET CONSTRAINTS ALL DEFERRED не отключит проверку ограничения внешнего ключа?Есть ли в любом случае обрезать таблицу, не вызывая проверку ограничения внешнего ключа и не задействуя CASCADE?

1 Ответ

0 голосов
/ 21 июня 2019

Удалить все данные из одной таблицы

Простейшая форма оператора TRUNCATE TABLE выглядит следующим образом:

TRUNCATE TABLE table_name;

Удалить все данные из таблицы, содержащей ссылки на внешние ключи

Чтобы удалить данные из основной таблицы и всех таблиц, которые имеют ссылки на внешние ключи к основной таблице, используйте параметр CASCADE следующим образом:

TRUNCATE TABLE table_name CASCADE;

Обновление:

BEGIN;
ALTER TABLE table_name DISABLE TRIGGER ALL;
TRUNCATE TABLE table_name;
ALTER TABLE table_name ENABLE TRIGGER ALL;
COMMIT;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...