Legushka
Дата: 20.01.2015 15:16:36
спасибо из РТФМ вытащил нужную таблицу
SELECT conname, connamespace, contype, condeferrable, condeferred, convalidated,
conrelid, contypid, conindid, confrelid, confupdtype, confdeltype,
confmatchtype, conislocal, coninhcount, conkey, confkey, conpfeqop,
conppeqop, conffeqop, conexclop, conbin, consrc
FROM pg_constraint
where conname='fk_table_z'
и в таблице у меня
CONSTRAINT fk_table_z FOREIGN KEY (pole_az_id)
REFERENCES blablabla.AZZ (az_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
подскажите как можно найти все таблице и поля которые ссылаются на мою текущую blablabla.AZZ
Legushka
Дата: 20.01.2015 16:17:53
сформулирую точнее что именно надо найти:
оооочень большая таблица, из нее надо найти все неиспользованные записи и отдельно их переместить в другую таблицу мусора
в БД очень много зависимостей Foreign Key
которые ссылаются на текущую, как можно найти из текущей таблицы все записи которые не встречаются ни в одной связи Foreign Key которые ссылаются на текущую таблицу
/\/\/\/\/\/\
Дата: 20.01.2015 22:20:07
Legushka,
Сделайте тупо и примитивно:
За одну транзакцию:
1. Берете запись, копируете ее в мусорную таблицу
2. Удаляете запись из основной таблицы.
Если удалось удалить - все хорошо. Ее ничего не держит.
Не удалось удалить - транзакция откатится к исходному состоянию. Больше эту запись не трогаете.
И так по всем записям в таблице.
То что это все будет делаться не очень быстро - не беда. Нужно всего лишь немного подождать. Неделя-другая - не срок.
/\/\/\/\/\/\
Дата: 21.01.2015 07:32:02
йоксель,
Подумаешь, одной базой больше, одной меньше...
А заводы стоят!
Тогда нужно действительно разобраться с постановкой задачи. Как ни крути, разобираться с предметной областью (то есть откуда и почему на эту таблицу ссылаются, почему ее нужно чистить и что будет, если не почитсят) придется. Никуда не денешься.