如何在postgresql中實(shí)現(xiàn)一個(gè)replaceinto功能-創(chuàng)新互聯(lián)

如何在postgresql中實(shí)現(xiàn)一個(gè)replace into功能?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)公司于2013年開(kāi)始,先為甕安等服務(wù)建站,甕安等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為甕安企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

PostgreSQL 9.5-

使用函數(shù)或with實(shí)現(xiàn)

create table test(id int primary key, info text, crt_time timestamp);
with upsert as (update test set info='test',crt_time=now() where id=1 returning *) insert into test select 1,'test',now() where not exists (select 1 from upsert where id=1);

PostgreSQL 9.5+

PostgreSQL 9.5 引入了一項(xiàng)新功能,UPSERT(insert on conflict do),當(dāng)插入遇到約束錯(cuò)誤時(shí),直接返回,或者改為執(zhí)行UPDATE。

INSERT INTO table_name VALUES() ON conflict (索引字段) DO
UPDATE ...

補(bǔ)充:PostgreSQL中select into用法總結(jié)

在普通的sql中,postgresql支持seelct......into......

但是動(dòng)態(tài)調(diào)用時(shí)候不支持select......into......

比如:

create or replace FUNCTION test () RETURNS void AS
$body$
DECLARE
toalnum int;
BEGIN
execute 'select sum(colname) into totalnum';
return;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

以上情況會(huì)報(bào)錯(cuò)。。。。。

因該修改為如下

create or replace FUNCTION test () RETURNS void AS
$body$
DECLARE
toalnum int;
BEGIN
execute 'select sum(colname)' into totalnum;
return;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。

當(dāng)前名稱:如何在postgresql中實(shí)現(xiàn)一個(gè)replaceinto功能-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://muchs.cn/article28/hicjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、網(wǎng)站收錄定制開(kāi)發(fā)、網(wǎng)站制作、移動(dòng)網(wǎng)站建設(shè)動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)