Итак, у меня есть учетные записи пользователей, в которых много данных, и иногда люди создают дубликаты учетных записей, и администраторам необходимо их неразрушающим образом объединить.
Я написал сценарий, который объединяет две учетные записи, исохраняет запись в таблице merge_record.Каждая строка данных хранится как одна запись merge_record, содержащая исходную учетную запись, целевую учетную запись, тип действия (удаление, слияние или исключение), имя таблицы, столбец, который обозначает номер счета, и закодированную строку, содержащую все пары ключ / значение.в следующем формате:
columnoneMERGEBANANAEQUALSvalueoneMERGEBANANASPLITTERcolumntwoMERGEBANANAEQUALSvaluetwo
Да, это, вероятно, трудно прочитать, но моя цель состояла в том, чтобы разграничить пары данных некоторой невероятно маловероятной для использования пользователем строкой,и иметь равные быть одинаково маловероятно, не будет разделен.Причина, по которой мне это нужно, заключается в том, что я также создал кнопку отмены слияния, и она должна быть обратимой - поэтому слияние отмены сканирует каждую строку merge_record, деконструирует пары столбец / значение и вставляет их в table_name под идентификатором original_account в идентификаторераздел account_column.
Однако мне все еще не нравится это.Некоторые придурки, прочитавшие этот пост, могут ввести MERGEBANANAEQUALS
в качестве имени, запросить слияние, а затем запросить отмену.Есть ли способ абсолютно гарантировать, что столкновения не произойдет?Или я должен изменить способ хранения пар ключ / значение?Если это так, что может быть лучше?