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