我正在尝试通过链接服务器 MSSQL 更新 mySQL 表。我的查询如下所示:
update openquery(CASTOMYSQL, 'select * from results_dwh_d where id_family = 0') set id_region = 0
当我执行此查询并且 id_region 列中的值不等于 0 时,一切正常,但当 id_region 等于 0 时出现错误。
Row cannot be located for updating. Some values may have been changed since it was last read.
最佳答案
在对链接服务器执行更新/插入/删除时,我并不特别关心使用 OPENQUERY。相反,我选择使用 EXECUTE AT 命令。
例如:
EXECUTE('UPDATE results_dwh_d SET id_region = 0 WHERE id_family = 0') AT CASTOMYSQL
我避免使用 OPENQUERY 的原因是 RDBMS 平台中有关 ANSI-SQL 的特性。 MSSQL 上的更新语句不会也不会始终与您可能执行更新/插入/删除的其他 RDBMS 平台的语法要求匹配。我对 MySQL 不太熟悉,但是 OPENQUERY 在后台执行的查询翻译可能会导致您的问题,并且使用 EXECUTE AS 将确保不会发生语法转换。
希望有帮助,
约翰
关于mysql - 链接服务器更新mysql不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20758795/