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