Создание несоответствия данных в базе

Создание несоответствия данных в базе

Продолжаем тему об изменениях при несоответствии данных. Допустим вы должны распространить измененное значение во все дочерние записи, ссылающиеся на строки, которые вы перенумеровали. Это будет происходить проще всего, если вы выбрали для внешних ключей вариант ON UPDATE CASCADE, однако если вы этого не сделали, то вам придется отключить ограничения, обновить все дочерние записи вручную и восстановить ограничения. Это трудоемкий, подверженный ошибкам процесс, который может прервать обслуживание вашей базы данных, так что если вы решите, что лучше его избежать, то будете правы. Даже если вы и завершите эту очистку до конца, то ненадолго.

Когда псевдоключ генерирует новое значение, оно будет больше, чем предыдущее им сгенерированное (даже если строка с предыдущим значением была удалена или изменена), создав тем самым не наибольшее значение в таблице, как будут полагать некоторые программисты. Допустим, вы обновляете строку с наибольшим значением 4 столбца bugid, приводя идентификационные номера к наименьшему значению, чтобы заполнить промежутки в нумерации. Следующая строка, которую вы вставите, используя генерацию псевдоключей по умолчанию, получит номер 5, создавая новый промежуток 4.


Опубликовано 28.11.2017