postgresql提供的方法:
on conflict do update保證乙個原子的 insert或者 update結果。在沒有無關錯誤的
前提下,這兩種 結果之一可以得到保證,即使在很高的併發度也能保證。這也可以被稱作
upsert — 「update 或 insert」。
但是這個方法和oracle中merge into 的方法差異較大,只能單條資料更新或新增,且需要建主鍵,一般情況下入庫的表不建主鍵,故用do$$**塊實現更新或新增的需要
do
$$ declare
rec record;
record_id integer
;begin
for rec in
(select b.s_city_id
b.week_no,
b.sad
from imp_send_info_w b
where b.week_no = to_char(
current_date-7
,'yyyyiw'))
loop
select
count(1
)into record_id
from imp_send_info_week
where
coalesce(s_city_id,
'-1')=
coalesce
(rec.s_city_id,
'-1'
)and week_no = rec.week_no;
if record_id =
0then
insert
into imp_send_info_week
(s_city_id,
week_no,
sad,
int_id)
values
(rec.s_city_id,
rec.week_no,
nextval(
'public.seq_imp_net_optimization'))
;else
update imp_send_info_week
set sad=rec.sad
where s_city_id=rec.s_city_id
and week_no = rec.week_no
endif;
endloop
;end
$$;
根據MAC生成唯一IP
冷勝魁 seaquester lengshengkui gmail.com 2009 5 15 mac2ip.sh bin sh if ne 1 then echo usage basename 0 exit 1 fi we need convert to uppercase,otherwise t...
vue根據陣列物件中某個唯一標識去重
由於在vue中,會自動在陣列和物件中加入 obser 觀察者模式的一些屬性,所以直接用陣列的filter去重 下面這種 indexof不能準確識別 var arr 1,2,2,3,4,5,5,6,7,7 var arr2 arr.filter function x,index,self consol...
如何根據當前時間生成唯一編號
long id new date gettime 是當前時間的唯一的編號 system.currenttimemillis 只是獲取當前的時間戳,單位是毫秒,但是這並不是唯一的.如果你在1毫秒中進行了兩次操作,那麼這兩個id就是相等的.問題的解決看你要求的精度如何了.一般可以使用當前的時間戳作為ra...