【发布时间】:2020-11-12 06:26:45
【问题描述】:
我使用 JDBC 连接到数据库,并且正在尝试运行更新查询。首先我输入查询,然后执行它(以同样的方式执行 SELECT,它工作得非常好)。
caseoutputUpdateQuery = "(UPDATE dbo.CASEOUTPUT_TEST SET NOTIFIED = 'YES') alias_output "
spark.read.jdbc(url=jdbcUrl, table=caseoutputUpdateQuery, properties=connectionProperties)
当我运行它时,出现以下错误:
A nested INSERT, UPDATE, DELETE, or MERGE statement must have an OUTPUT clause.
我尝试以不同的方式解决此问题,但总是出现另一个错误。例如,我尝试用以下方式重写查询:
caseoutputUpdateQuery = "(UPDATE dbo.CASEOUTPUT_TEST SET NOTIFIED = 'YES' OUTPUT DELETED.*, INSERTED.* FROM dbo.CASEOUTPUT_TEST) alias_output "
但是我遇到了这个错误:
A nested INSERT, UPDATE, DELETE, or MERGE statement is not allowed in a SELECT statement that is not the immediate source of rows for an INSERT statement.
我尝试重写的另一种方法是:
caseoutputUpdateQuery = "(INSERT INTO dbo.UpdateOutput(OldCaseID,NotifiedOld) SELECT * FROM( UPDATE dbo.CASEOUTPUT_TEST SET NOTIFIED = 'YES' OUTPUT deleted.OldCaseID,DELETED.NotifiedOld ) AS tbl) alias_output "
但我遇到了这个错误:
A nested INSERT, UPDATE, DELETE, or MERGE statement is not allowed inside another nested INSERT, UPDATE, DELETE, or MERGE statement.
我确实尝试了我在互联网上找到的所有东西,但没有运气。您对我如何解决这个问题并运行我的更新语句有什么建议吗?
【问题讨论】:
标签: apache-spark jdbc databricks