欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

postgresql無則插入,有則更新問題

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

準(zhǔn)備工作

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

在這里插入圖片描述

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

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

語法

postgresql 9.5版本之前想實(shí)現(xiàn)upsert功能可以使用with語法來實(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,表中沒有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語法簡解)

那么是如何做到呢?

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

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

語法

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

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,表中沒有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語法簡解)

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

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

總結(jié)

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

相關(guān)文章

  • PostgreSQL模式匹配與正則表達(dá)式方法總結(jié)

    PostgreSQL模式匹配與正則表達(dá)式方法總結(jié)

    在postgresql中使用正則表達(dá)式時(shí)需要使用關(guān)鍵字“~”,以表示該關(guān)鍵字之前的內(nèi)容需匹配之后的正則表達(dá)式,這篇文章主要給大家介紹了關(guān)于PostgreSQL模式匹配與正則表達(dá)式的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • PostgreSQL生成列實(shí)現(xiàn)過程介紹

    PostgreSQL生成列實(shí)現(xiàn)過程介紹

    PostgreSQL 12 增加新的特性——生成列(Generated Columns),也就是計(jì)算列。在之前版本也可以實(shí)現(xiàn),但需要定義函數(shù)和觸發(fā)器,利用該功能可以更容易使用并可以提升性能。生成列是給表指定計(jì)算列,其數(shù)據(jù)可以根據(jù)其他列數(shù)據(jù)自動生成,當(dāng)原數(shù)據(jù)更新時(shí)其自動更新
    2023-01-01
  • PostgreSQL中的VACUUM命令用法說明

    PostgreSQL中的VACUUM命令用法說明

    這篇文章主要介紹了PostgreSQL中的VACUUM命令用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • PostgreSQL 添加各種約束語法的操作

    PostgreSQL 添加各種約束語法的操作

    這篇文章主要介紹了PostgreSQL 添加各種約束語法的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • PostgreSQL 分頁查詢時(shí)間的2種比較方法小結(jié)

    PostgreSQL 分頁查詢時(shí)間的2種比較方法小結(jié)

    這篇文章主要介紹了PostgreSQL 分頁查詢時(shí)間的2種比較方法小結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • PostgreSQL運(yùn)維案例之遞歸查詢死循環(huán)解決方案

    PostgreSQL運(yùn)維案例之遞歸查詢死循環(huán)解決方案

    PostgreSQL提供的遞歸語法是很棒的,例如可用來解決樹形查詢的問題,解決Oracle用戶connect by的語法兼容性,下面這篇文章主要給大家介紹了關(guān)于PostgreSQL運(yùn)維案例之遞歸查詢死循環(huán)解決方案的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • PostgreSQL 角色與用戶管理介紹

    PostgreSQL 角色與用戶管理介紹

    這篇文章主要介紹PostgreSQL 角色與用戶管理相關(guān)知識,需要的朋友可以參考下
    2013-08-08
  • Postgresql在mybatis中報(bào)錯:操作符不存在:character varying == unknown的問題

    Postgresql在mybatis中報(bào)錯:操作符不存在:character varying == unknown的問題

    這篇文章主要介紹了Postgresql在mybatis中報(bào)錯: 操作符不存在 character varying == unknown的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 詳解PostgreSQL 實(shí)現(xiàn)定時(shí)任務(wù)的 4 種方法

    詳解PostgreSQL 實(shí)現(xiàn)定時(shí)任務(wù)的 4 種方法

    這篇文章主要介紹了PostgreSQL 實(shí)現(xiàn)定時(shí)任務(wù)的 4 種方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Postgres中UPDATE更新語句源碼分析

    Postgres中UPDATE更新語句源碼分析

    這篇文章主要給大家介紹了關(guān)于Postgres中UPDATE更新語句源碼分析的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03

最新評論