最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

postgresql無(wú)則插入,有則更新問(wèn)題

 更新時(shí)間:2023年04月05日 15:20:39   作者:布丁吖  
這篇文章主要介紹了postgresql無(wú)則插入,有則更新問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

準(zhǔn)備工作

我們只需要準(zhǔn)備一張表??

在這里插入圖片描述

upsert是一個(gè)組合詞,即當(dāng)往表中插入記錄,如果該記錄已存在則更新,否則插入新記錄。

postgresql 9.5版本之前實(shí)現(xiàn)upsert功能

語(yǔ)法

postgresql 9.5版本之前想實(shí)現(xiàn)upsert功能可以使用with語(yǔ)法來(lái)實(shí)現(xiàn)。

實(shí)例

SQL如下

WITH UPSERT
         AS ( UPDATE org SET org_name = '復(fù)仇者聯(lián)盟2', modify_time = now() WHERE org_id = 2 RETURNING *)
INSERT
INTO org (org_id, org_no, org_name)
SELECT 2,
       '002',
       '復(fù)仇者聯(lián)盟'
WHERE NOT EXISTS(SELECT 1 FROM upsert WHERE org_id = 2);

第一次執(zhí)行SQL,表中沒(méi)有org_id為2的數(shù)據(jù),則插入一條新數(shù)據(jù)。

在這里插入圖片描述

執(zhí)行成功了,刷新一下表,可以看到插入了一條新數(shù)據(jù)。

在這里插入圖片描述

再次執(zhí)行SQL,這時(shí)表中已經(jīng)有一條為org_id為2的數(shù)據(jù)了,那么則更新數(shù)據(jù)。

在這里插入圖片描述

刷新表,可以看到更新了org_name和modify_time字段。

在這里插入圖片描述

嘚吧嘚(SQL語(yǔ)法簡(jiǎn)解)

那么是如何做到呢?

  • 首先執(zhí)行update語(yǔ)句,如果找到滿足條件的數(shù)據(jù)就更新,并把該數(shù)據(jù)存放到upsert中,在執(zhí)行insert時(shí)就不滿足條件了;
  • 如果找不到滿足條件的數(shù)據(jù),upsert中就是空的,在執(zhí)行insert語(yǔ)句時(shí)就滿足條件了。二者是互斥的。

postgresql 9.5版本之后實(shí)現(xiàn)upsert功能

語(yǔ)法

postgresql 9.5版本就可以使用INSERT ON CONFLICT語(yǔ)句了,語(yǔ)法如下:

insert into table_name(column_list) 
values(value_list)
on conflict target action;

實(shí)例

SQL如下:

insert into org(org_id, org_no, org_name)
values (3, '003', '銀河護(hù)衛(wèi)隊(duì)')
on conflict(org_id) do update set org_name='銀河護(hù)衛(wèi)隊(duì)2',
                                  modify_time=now();

第一次執(zhí)行SQL,表中沒(méi)有org_id為3的數(shù)據(jù),則插入一條新數(shù)據(jù)。

在這里插入圖片描述

執(zhí)行成功了,刷新一下表,可以看到插入了一條新數(shù)據(jù)。

在這里插入圖片描述

第二次執(zhí)行SQL,這時(shí)表中已經(jīng)有一條為org_id為3的數(shù)據(jù)了,那么則更新數(shù)據(jù)。

在這里插入圖片描述

可以看到更新了org_name和modify_time字段。

在這里插入圖片描述

嘚吧嘚(SQL語(yǔ)法簡(jiǎn)解)

其實(shí)大體思路和之前還是一樣,就是9.5版本有了INSERT ON CONFLICT語(yǔ)句之后,使得書(shū)寫(xiě)SQL更加簡(jiǎn)單了,那就簡(jiǎn)單解釋一下SQL語(yǔ)法中的兩個(gè)名詞吧。

  • target可以理解為目標(biāo)或者限制條件,一般是某個(gè)字段名。
  • action是要做的具體操作,比如update、delete、do nothing等。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

康马县| 吴堡县| 中山市| 斗六市| 罗山县| 沙洋县| 夏河县| 炉霍县| 内黄县| 安西县| 德庆县| 双峰县| 青田县| 佳木斯市| 昌宁县| 定兴县| 梅河口市| 新干县| 星子县| 阳城县| 克拉玛依市| 共和县| 老河口市| 陇西县| 顺昌县| 赤城县| 鹤山市| 拜泉县| 安阳市| 汉中市| 新丰县| 牡丹江市| 万源市| 泉州市| 西乡县| 古田县| 沙坪坝区| 招远市| 和政县| 晋城| 武陟县|