Как обнаружить только изменения в загруженном файле? - PullRequest
0 голосов
/ 02 января 2012

Если у меня есть файл xml (загруженный на мой сервер), и я выполняю некоторую обработку для него, чтобы получить данные из него, затем сохраните эти данные в моей базе данных.

Если пользователь делаетнекоторые изменения (вставьте, обновите, удалите), затем снова загрузите файл на мой сервер.Есть ли способ обнаружить изменения (вставить, обновить, удалить), чтобы обновить мою базу данных, а не просто удалять все данные и вставлять их снова. Особенно, некоторые данные зависят от существующих данных (ссылочная целостность) иесли я удаляю все данные, иждивенцы будут удалены (каскадное удаление) !!

Примечание:

  • Я сохраняю хэш файла, поэтому я знаю, что с момента последней загрузки произошли какие-либо изменения.

1 Ответ

3 голосов
/ 02 января 2012

Как отметил Дарин в своем комментарии, это во многом зависит от структуры и содержимого вашего XML-файла и вашей базы данных.

В принципе, в настоящее время вы удаляете набор строк из определенного числа таблиц и(повторно) вставьте еще один набор строк после этого.

Если вы хотите обновить только свою базу данных, вы можете - для каждой таблицы - сначала определить все строки, которые вы в настоящее время удалили (т.е. сделать SELECT ... WHERE вместоDELETE ... WHERE), подготовьте набор строк, который вы вставите, и сравните эти два набора (давайте назовем их УДАЛИТЬ и INSERT ):

  • Строки только в наборе DELETE необходимо удалить из базы данных
  • Строки, которые только в INSERT набор должен быть вставлен
  • Строки в оба INSERT и DELETE должны быть обновлены.

Но, как уже упоминалось, от того, как и в каком порядке эти операции зависит, зависитна ваших конкретных структурах данных.Например, если у вас есть зависимости между таблицами (т. Е. Отношения родитель-потомок), операция удаления родительской сущности также должна заботиться о потомках (возможно, с помощью предложения ON DELETE CASCADE в определении внешнего ключа).В этом случае вам также следует обрабатывать родительские таблицы для их дочерних таблиц.

...