gpt4 book ai didi

带条件插入的 Oracle Merge 语句

转载 作者:行者123 更新时间:2023-12-02 00:21:56 27 4
gpt4 key购买 nike

我使用以下语句插入或更新我们的客户已签署的当前文档版本:

        MERGE INTO schema.table ccv
USING (select :customer_id as customer_id, :doc_type as doc_type, :version as Version FROM DUAL) n
ON (ccv.customer_id = n.customer_id and ccv.doc_type = n.doc_type)
WHEN MATCHED
THEN UPDATE
set ccv.version = n.version
DELETE WHERE ccv.version is null
WHEN NOT MATCHED
THEN INSERT
( customer_id, doc_type, version)
VALUES
(:customer_id,:doc_type,:version)

基本上,当我使用 DELETE WHERE 语句删除时,我想避免在相同条件下插入。

问题是,存在三种不同的文档类型 (doc_type),但可能只有一两种被模拟签名。

如果客户签署了文档,那么我想存储它的版本,如果没有,那么我不想在数据库中记录该文档。

因此,当新的 :version 为 null 时,我删除了现有的行。效果很好。问题是,当没有存储该客户的文档时,oracle 实际上会插入一条版本 = NULL 的记录。

当 :version 为 null 时如何避免插入记录?

拆分合并以分离删除、更新和插入语句是唯一的方法吗?

最佳答案

如果您使用的是 10g,您也可以使用插入条件:

http://www.oracle-developer.net/display.php?id=310

研发。

关于带条件插入的 Oracle Merge 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10600120/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com