Удаление неверных ссылок
Ключ
-df
Описание
Задает удаление неверных ссылок. Используется только с ключом -s
.
Ссылка считается неверной, если некоторый столбец (например, А) ссылается на значения другого столбца (например, В) в этой же или другой таблице БД, однако значение некоторой строки столбца А отсутствует среди значений столбца В.
Удаление неверных ссылок выполняется по следующим правилам:
-
если ссылающийся столбец допускает NULL-значение, то неверное значение ссылки заменяется NULL-значением;
-
если ссылающийся столбец не допускает NULL-значение, то удаляется вся строка таблицы;
-
если в удаленной строке таблицы имелся столбец, на который есть ссылка из другой таблицы, то в результате порождается новая неверная ссылка. Эта ситуация не диагностируется, поэтому для полного устранения неверных ссылок необходимо повторять тестирование БД с ключом
-df
до тех пор, пока testdb покажет отсутствие неверных ссылок.
Примеры
Тестирование неверных ссылок с выдачей протокола тестирования на консоль: testdb /usr/linter/db -r -df Тестирование неверных ссылок с последующей заменой на NULL-значение: testdb /usr/linter/db -r -df -s /usr/linter/rest_db/restore.sql Выполнение SQL-скрипта для корректировки неверных ссылок: inl -u SYSTEM/MANAGER8 _/usr/linter/rest_db/restore.sql
Примечания
-
Ключи
-df
,-dr
,-ds
могут использоваться как тестирующие и восстанавливающие. Тестирующие только выдают соответствующее сообщение, восстанавливающие вносят изменения в базу, в основном работают в паре с ключом-r
. -
Утилита testdb не будет работать, если перед восстанавливающими ключами не будет указан ключ
-r
. Исключения составили-dn
,-dz
,-df
, не требующие наличия-r
,-df
– с ключом-s
.