Как добавить данные в таблицу базы данных, которые были удалены, но нужно восстановить?

Как можно оптимизировать процесс обновления данных в базе данных для товаров, которые отсутствуют в полученных по API данных? Моё текущее решение включает заведение нового поля с тремя возможными значениями: "Y" (обновлено по API), "N" (по умолчанию для всех товаров), и "NN" (был обновлен, но отсутствует в последнем API обновлении). Однако, мне кажется, что добавление дополнительного поля неэффективно, так как необходимо всего лишь обнулить остаток для товаров, которые были обновлены, но в последнем API обновлении не представлены.
  • 4 июля 2024 г. 12:32
Ответы на вопрос 2
Существует несколько способов восстановить данные, которые были удалены из базы данных:

1. Использование резервной копии: если у вас есть резервная копия базы данных, вы можете восстановить удаленные данные из нее.

2. Использование журналов транзакций: некоторые системы баз данных предоставляют возможность восстанавливать данные из журналов транзакций, которые могут содержать информацию о удаленных записях.

3. Восстановление данных вручную: если удаленные данные куда-то экспортировались или сохранялись, вы можете попытаться их восстановить и внести обратно в базу данных.

Что касается оптимизации процесса обновления данных, возможно, вам стоит рассмотреть следующие варианты:

1. Проверка наличия товара перед обновлением: прежде чем обновлять данные по API, вы можете проверить, существует ли товар в базе данных, чтобы избежать обновления несуществующих записей.

2. Использование индексов: для быстрого поиска товаров, которые отсутствуют в полученных данных, вы можете создать индексы на соответствующие поля в базе данных.

3. Использование массовых операций: вместо обновления записей по одной, можно выполнить массовые операции обновления для всех товаров одновременно.

4. Использование транзакций: оберните операции обновления данных в транзакцию, чтобы обеспечить целостность данных и откат изменений в случае ошибки.
делаю запрос в бд, вытаскиваю товары которые есть в API и пытаюсь искать в массиве вытащенных товаров - товары, которых нет в API через in_array,
Для этого есть not in , перечисляете айдишники/уникальные идентификаторы всех пришедших с апи товаров, и у оставшихся ставите наличие 0 одним апдейтом.

но что-то фигня какая-то получается, находит один единственный товар, который есть и в API и в бд
По описанию вообще не ясно как вы ищете совпадающие товары, по этому есть мысль что проблема скорее в коде и алгоритме, чем в апи или базе.
Похожие вопросы