2017-01-31 79 views
0

我有一個包含三個複合主鍵(列customer_id,system_origin,policy_number)的多個列的表。 表創建如下:如何在插入新值之前檢查複合主鍵

Create table LOST_MEMBER_ACCESS_LOG (
Customer_id varchar2(20) NOT NULL, 
System_Origin varchar2(20) NOT NULL, 
Policy_Number varchar2(20) NOT_NULL, 
PRIMARY_KEY(Customer_id,System_Origin, Policy_Number) 
); 

我必須寫一個存儲過程,其首創檢查的要求,如果已存在某行鍼對CUSTOMER_ID,system_origin,policy_number然後將其與更新已有的行獨特的組合新值或插入新行。

+3

MERGE是您正在查找的命令。 [瞭解更多信息](https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9016.htm#SQLRF01606) – APC

+0

對於兩種情況,您都可以使用'LEFT JOIN'檢查值的存在情況INSERT '和'UPDATE',但你需要兩次寫入才能分離查詢'OR',你可以直接在表中查詢,然後有條件地設置查詢。 – Susang

回答

1

你說什麼,你想要做的是:

if row exists then 
    update ... 
else 
    insert ... 
end if; 

但有更簡單的方法。只是做了更新,並檢查是否有任何行被感動

update lost_member_access_log 
    set ... 
where ... ; 
if sql%rowcount = 0 then 
    insert into lost_member_access_log ... 
end if; 

MERGE當然也是一種選擇。

相關問題