2
我用下面的语句插入或更新当前文档版本客户签署:甲骨文合并声明有条件插入
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),但只有一两个可能会被模拟签名。
如果客户签署了一个文档,那么我想存储它的版本,如果没有,那么我不想在数据库中有该文档的记录。
因此,当new:version为null时,我删除现有的行。这很好。 问题是,当没有存储该客户的文档时,oracle实际上会插入version = NULL的记录。
如何避免在下列情况下插入记录:版本为空?
分裂合并分开删除,更新和插入语句的唯一方法来做到这一点?
谢谢。我不知道我怎么会在文档中错过... – SWilk
没问题,这是关于正确的时刻在正确的位置...... – Sebas