ORACLE MERGE 的 UPDATE ... DELETE WHERE 组合子句

迁移特征 merge_update_delete 的规则事实、精确目标横向结论与可执行验证路径。产品家族相似性不作为精确版本结论的依据。

professionalmajorhighora.syntax.merge_update_delete

场景说明

该场景属于“查询与 DML 语法”,适用于 sql、mybatis、plsql。权威状态:可进入权威统计。

正向识别示例

以下均来自规则库中 should_hit=true 的合成公开示例,不是客户代码。

MERGE INTO t USING s ON (t.id = s.id) WHEN MATCHED THEN UPDATE SET t.qty = t.qty - s.qty DELETE WHERE t.qty <= 0
MERGE INTO stock USING d ON (stock.sku = d.sku) WHEN MATCHED THEN UPDATE SET cnt = d.cnt DELETE WHERE cnt = 0 WHEN NOT MATCHED THEN INSERT (sku, cnt) VALUES (d.sku, d.cnt)

21 个精确目标版本 / 模式

目标支持度证据等级公开边界深入核对
达梦 DM8partialdoc_based未登记额外公开说明,按来源与验证步骤复核。改造点
人大金仓 KingbaseES V8partialdoc_based未登记额外公开说明,按来源与验证步骤复核。改造点
openGauss 5.0 A 模式partialunverified未登记额外公开说明,按来源与验证步骤复核。改造点
openGauss 6.0 A 模式noneversion_observed未登记额外公开说明,按来源与验证步骤复核。改造点
PostgreSQL 16 + orafce 4.16partialdoc_based未登记额外公开说明,按来源与验证步骤复核。改造点
PostgreSQL 16partialdoc_based未登记额外公开说明,按来源与验证步骤复核。改造点
展开 15 个 unknown / undeclared 结论
GaussDB 505(ORA 模式)unknownunverified当前事实源不足,不推断兼容。
GBase 8sunknownunverified当前事实源不足,不推断兼容。
GoldenDB V6unknownunverified当前事实源不足,不推断兼容。
瀚高 HGDB 4.5unknownunverified当前事实源不足,不推断兼容。
OceanBase 4.2.5 MySQL 模式unknownunverified当前事实源不足,不推断兼容。
OceanBase 4.2.5 Oracle 模式unknownunverified当前事实源不足,不推断兼容。
OceanBase 4.3.5 MySQL 模式unknownunverified当前事实源不足,不推断兼容。
OceanBase 4.3.5 Oracle 模式unknownunverified当前事实源不足,不推断兼容。
openGauss 6.0 B 模式(Dolphin)unknownunverified当前事实源不足,不推断兼容。
磐维 PanWeiDB 2.0unknownunverified当前事实源不足,不推断兼容。
磐维 PanWeiDB 3.0 A 模式unknownunverified当前事实源不足,不推断兼容。
PolarDB(Oracle 兼容)2.0unknownunverified当前事实源不足,不推断兼容。
神通数据库 7unknownunverified当前事实源不足,不推断兼容。
TDSQL Boundlessunknownunverified当前事实源不足,不推断兼容。
TiDB 8.5unknownunverified当前事实源不足,不推断兼容。

改造与验证路径

推荐方向

db_side · 若目标无 UPDATE 后 DELETE,则在同一事务锁定候选目标,执行 UPDATE 并把本次 UPDATE 命中且按更新后值满足删除条件的稳定键集合写入暂存表,再仅按该键集合 DELETE;任何一步失败整体回滚

库侧

用目标保证的暂存键集合/RETURNING 按更新后值筛选,持有目标行锁并在同一事务串联 UPDATE→DELETE,保持 update trigger 后接 delete trigger · 风险 manual

应用侧

应用仅负责开启同一数据库事务并调用受控过程;不得在两次自动提交间传递键集合 · 风险 manual

验收步骤

覆盖更新前真/更新后真、未被本次 UPDATE 命中但条件为真、多源同键、并发改写、update/delete trigger 顺序、影响行数;在 UPDATE 后注入故障确认回滚且无误删

公开来源