У меня есть MS SQL Server со связанным сервером MySQL. Мне нужно частично синхронизировать таблицу между двумя серверами. Это делается в три этапа и на основе условия:
Удалить все строки из таблицы MySQL, которые не удовлетворяют условию
Вставьте все новые строки в таблицу MySQL, которые удовлетворяют условию
Обновление всех строк на сервере MySQL, которые удовлетворяют условию и имеют разные данные между MySQL и SQL Server
Шаги 1 и 2 всегда выполняются без проблем. Но шаг 3 не будет выполняться, если есть что обновить. Сбой запроса со следующим исключением: Набор строк использовал оптимистичный параллелизм, и значение столбца было изменено после последней выборки или повторной синхронизации содержащейся строки.].
Это запрос, который выполняется:
update mysqlserver...subscribers
set Firstname = Voornaam,
Middlename = Tussenvoegsel,
Surname = Achternaam,
email = e-mail
from mysqlserver...subscribers as b, tblkandidaat
where (b.kandidaatid = tblkandidaat.kandidaatid) and
(tblkandidaat.kandidaatid in (
select subsc.kandidaatid
from mysqlserver...subscribers subsc inner join tblKandidaat
on (subsc.kandidaatid=tblKandidaat.kandidaatid)
where (subsc.list=1) and
((subsc.firstname COLLATE Latin1_General_CI_AI <> Voornaam
or (subsc.middlename COLLATE Latin1_General_CI_AI <> Tussenvoegsel)
or (subsc.surname COLLATE Latin1_General_CI_AI <> tblKandidaat.Achternaam)
or (subsc.email COLLATE Latin1_General_CI_AI <> tblKandidaat.e-mail))
));
У кого-нибудь есть идеи о том, как это предотвратить?