mysql - 链接服务器更新mysql不工作

标签 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 时出现错误。

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/

相关文章:

mysql - SQL INSERT INTO 查询语法

mysql - 如何连接到 python3 中的 AWS mysql 数据库?

sql-server - 将日期部分作为参数从表发送到 sql server 中的 DATEADD 函数

sql - 在 SQL 中获取平均值忽略所有小于 0 的值

sql - T-SQL : SUSER_SNAME vs SUSER_NAME?

sql-server - SQL合并错误: The MERGE statement attempted to UPDATE or DELETE

mysql - 计算mysql中两行之间的差异

java - 在MySQL中添加java日期时出现问题?

sql-server - 触发 AFTER INSERT、UPDATE、DELETE 以调用带有表名和主键的存储过程

sql-server - 如何让 View 显示当前的列定义?