我有一个带有链接MySQL服务器的。我需要在两个服务器之间部分同步一个表。这分三个步骤进行,并基于一个条件:
步骤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))
));有谁知道怎么防止这事吗?
发布于 2010-01-15 19:33:50
请尝试以下查询:
update b
set
Firstname = Voornaam,
Middlename = Tussenvoegsel,
Surname = Achternaam,
email = e-mail
from
mysqlserver...subscribers b
inner join tblkandidaat k on b.kandidaatid = k.kandidaatid
where
b.list=1
and (
b.firstname COLLATE Latin1_General_CI_AI <> k.Voornaam
or b.middlename COLLATE Latin1_General_CI_AI <> k.Tussenvoegsel
or b.surname COLLATE Latin1_General_CI_AI <> k.Achternaam
or b.email COLLATE Latin1_General_CI_AI <> k.e-mail
)发布于 2009-07-31 03:36:18
您可以尝试在mysql中创建第二个表,对所有更改的行执行从sql-server到空表的插入,并在两个mysql表之间执行步骤3。
发布于 2010-01-02 07:05:50
在where语句中不要使用子查询。子查询可能返回多行,然后得到错误。
https://stackoverflow.com/questions/1206136
复制相似问题