链接服务器更新mysql无法正常工作

时间:2013-12-24 09:59:17

标签: mysql sql-server tsql linked-server

我正在尝试通过链接服务器MSSQL更新mySQL表。我的查询如下:

update openquery(CASTOMYSQL, 'select * from results_dwh_d where id_family = 0') set id_region = 0

当我执行此查询并且列id_region中的值不等于0时一切正常但是当id_region等于0时出现错误。

  

无法找到行进行更新。自上次读取以来,某些值可能已更改。

2 个答案:

答案 0 :(得分:1)

在对链接服务器执行更新/插入/删除时,我并不特别关心使用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将确保不会发生语法转换。

希望有所帮助,

约翰

答案 1 :(得分:-1)

您可以使用此代码,

UPDATE OPENQUERY(lin_server_name, 
  'select id_region FROM database_name.table_name WHERE id_family = 0'
)
SET id_region = 0
--where id_family = 0;
相关问题