回覆列表
-
1 # Qzlamyz
-
2 # 軟體測試開發技術棧
我們在 Oracle資料庫進行寫入資料操作時,通常需要判斷一下要寫入的資料是否已經存在,以避免重複的寫入資料。我們可以透過 MERGE INTO的避免資料重複寫入,下面我們詳細介紹一下:
簡單的示例我們以user_basic_infor表為例,建表語句如下:
建表後,我們向空表中寫入兩條資料,如下:
我們使用 MERGE INTO 可以避免資料重複寫入, MERGE INTO 語法結構如下。
MERGE INTO 語法比較好理解,它表示:A表資料的寫入資料來源是B表中資料的記錄,透過 ON 條件進行過濾,當A表與B表中的資料透過ON條件進行過濾後,如果存在結果則執行更新操作,如果不存在結果則執行寫入操作。
如下,我們使用 MERGE INTO 語法向Oracle資料庫中寫入一條資料,SQL如下:
需要注意的是注意,語句寫的時候ON中的條件記得過濾準確,不然可能會執行全表更新。
-
3 # 成睿軟體
都是一幫百度搬運工回答問題。
最直接的方法就是設定一個不能重複的欄位作為這個表的主鍵,也可以多個欄位一起,這樣新增欄位的時候就不用考慮重複事情了。
什麼插入資料的時候先查詢是否存在,考慮過工作量和效率麼?
有時候用oracle的資料庫,插入資料的時候需要判斷一下該條資料是否已經存在。
我們的第一思路如下,首先執行下面這個sql:
select count(*) isExists from t_test_lll;
然後判斷isExists等於0與否,如果等於0,則執行insert。
上面這樣寫,也可以,但是多寫很多程式碼,不利於後期維護。
其實oracle可以內建在insert語句中進行判斷,如下sql:
insert
when (not exists (select 1 from t_test_lll where id = "111")) then
into t_test_lll(id) select "111" from dual;
這樣,當資料庫裡有一個id="111"的記錄的時候,就不會進行insert操作了。