Sql server 找不到要更新的行
我尝试使用以下命令从事件表中删除一些行Sql server 找不到要更新的行,sql-server,tsql,linked-server,Sql Server,Tsql,Linked Server,我尝试使用以下命令从事件表中删除一些行 DECLARE @PRODUCTION_ID int = 13811 DELETE openquery(TEST, 'SELECT p.id as production_id FROM EVENTS ev LEFT JOIN production_seasons ps ON ev.production_season_id = ps.id LEFT JOIN productions p ON ps.production_id = p.id') whe
DECLARE @PRODUCTION_ID int = 13811
DELETE openquery(TEST,
'SELECT p.id as production_id FROM EVENTS ev
LEFT JOIN production_seasons ps ON ev.production_season_id = ps.id
LEFT JOIN productions p ON ps.production_id = p.id')
where production_id = @PRODUCTION_ID
但是,当返回事件时,即存在非空结果集时,查询将失败。如果结果集为空,查询只返回(受影响的0行)
我得到的错误是:
返回链接服务器“测试”的OLE DB提供程序“MSDASQL”
消息“找不到要更新的行。某些值可能已被删除。”
自上次阅读后已更改。“
我不知道这意味着什么,非常感谢您的帮助。上述查询已更改为:
DECLARE @TSQL varchar(500)
SELECT @TSQL =
'DELETE OPENQUERY(TEST,''SELECT ev.* FROM EVENTS ev
LEFT JOIN production_seasons ps ON ev.production_season_id = ps.id
LEFT JOIN productions p ON ps.production_id = p.id WHERE p.id = ' + convert(varchar, @PRODUCTION_ID) + ''')'
EXEC (@TSQL)
重要的部分是select ev.*
,因为它似乎使其特定于从事件表中删除。帮助我认识到这一点
因为你不能通过openquery传递变量,我不得不利用它。你有理由用
openquery
进行删除吗?你不能直接删除记录吗?链接到MySQL数据库。我不认为还有其他选择吗?我设法解决了这个问题,因为如果没有指定表,MySQL似乎会对删除哪些行感到困惑,即SELECT EV.*
。添加一个“答案”案例有助于某人。