Добрый день!
Мне необходимо удалить большую часть таблицы с четырьмя миллионами строк, delete from tbl where
работает бесконечность, поэтому, по всей видимости, нужно использовать промежуточные таблицы. Ситуацию осложняют несколько других таблиц, c Foreign-key constraints: ON DELETE SET NULL
. И это правило должно выполняться во время удаления.
Если делать
BEGIN;
CREATE TABLE tbl_new AS SELECT * FROM tbl where a is b;
ALTER TABLE tbl RENAME TO tbl_old;
ALTER TABLE tbl_new RENAME TO tbl;
COMMIT;
drop table tbl_old cascade;
REFERENCES tbl_old(id)
Если делать
BEGIN;
CREATE TABLE tbl_tmp AS SELECT * FROM tbl where a is b
TRUNCATE tbl;
INSERT INTO cart SELECT * FROM tbl_tmp;
COMMIT;
Как быть?