【发布时间】:2021-11-11 03:34:57
【问题描述】:
我想将 upsert 查询从 Oracle DB 迁移到 AzureSQL。下面显示了一个 Oracle 准备好的语句,它从 dual 中获取值并对 DUMMY 表执行 upsert 操作。
MERGE INTO DUMMY a
USING (SELECT ? ID,
? NAME,
? SIZE from dual) b
ON (a.ID = b.ID)
WHEN MATCHED THEN
UPDATE
SET a.ID = b.ID,
a.NAME = b.NAME,
a.SIZE = b.SIZE
WHEN NOT MATCHED THEN
INSERT(a.ID,
a.NAME,
a.SIZE)
VALUES ( b.ID,
b.NAME,
b.SIZE)
我之前还要求从 Oracle 迁移到 Postgres。 This 是我询问的 PostgreSQL 版本。我现在正在寻找一种转换成 AzureSQL 的方法。
【问题讨论】:
-
不知道,我不了解 Azure,但是您编写的 MERGE 将不起作用,因为您无法更新 ON 子句中引用的列(本例中为 ID)。
-
Oracle upserts 现在可以在实时系统上正常工作。需要 T-SQL 版本。
标签: tsql jdbc azure-sql-database prepared-statement upsert