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

Postgresql使用update語句的方法示例

 更新時(shí)間:2024年04月13日 09:46:16   作者:一只小錦鯉_  
PostgreSQL是一種開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它支持SQL語言以及許多高級(jí)功能,如事務(wù)、外鍵、觸發(fā)器等,下面這篇文章主要給大家介紹了關(guān)于Postgresql使用update語句的相關(guān)資料,需要的朋友可以參考下

解決問題

通過多張關(guān)聯(lián)表更新主表的字段,根據(jù)狀態(tài)更新為不同的值。

一、關(guān)聯(lián)表更新

1.關(guān)聯(lián)一張表

更新 table1 表中 num 字段的值為 table2 表中的 sum 的值

update table1 a
set a.num = b.sum
from table2 b
where a.id = b.rel_id and b.type = '1';

2.關(guān)聯(lián)多張表

更新 table1 表中 num 字段的值為 table2 和 table3 表中的 sum 字段的和

update table1 a
set a.num = b.sum + c.sum
from table2 b
left join table3 c on b.id = c.rel_id
where a.id = b.rel_id and c.type = '1';
update table1 a
set a.num = b.sum + c.sum
from table2 b, table3 c
where a.id = b.rel_id and b.id = c.rel_id and c.type = '1';

二、根據(jù)狀態(tài)更新為不同的值

根據(jù) table2 表中的 type 的值,更新 table1 表中 num 字段的值

update table1 a
set a.num = case when b.type = '1' then b.sum else b.sum + 1 end
from table2 b
where a.id = b.rel_id;

根據(jù) table3 表中的 type 的值,更新 table1 表中 num 字段的值為 table2 表中的值

update table1 a
set a.num = case when c.type = '1' then b.interest_sum else b.interest_sum + 1 end
from (
	select sum(interest) as interest_sum from table2 group by country
	) b
left join table3 c on b.rel_id = c.id
where a.rel_id = b.id and a.type = '1';

附:update對(duì)分區(qū)表使用的影響

在查詢這個(gè)一對(duì)多進(jìn)行update執(zhí)行的時(shí)候,官網(wǎng)還對(duì)其分區(qū)表的分區(qū)鍵進(jìn)行update后,會(huì)不會(huì)變更其分區(qū)進(jìn)行了解讀:

在分區(qū)表的情況下,更新一行有可能導(dǎo)致它不再滿足其所在分區(qū)的分區(qū)約束。此時(shí),如果這個(gè)行滿足分區(qū)樹中某個(gè)其他分區(qū)的分區(qū)約束,那么這個(gè)行會(huì)被移動(dòng)到那個(gè)分區(qū)。 如果沒有這樣的分區(qū),則會(huì)發(fā)生錯(cuò)誤。在后臺(tái),行的移動(dòng)實(shí)際上是一次DELETE操作和一次INSERT操作。

在移動(dòng)的行上的并發(fā)UPDATE或DELETE可能會(huì)收到序列化失敗錯(cuò)誤。 假設(shè)會(huì)話 1 正在分區(qū)鍵上執(zhí)行UPDATE,同時(shí),對(duì)可訪問該行的并發(fā)會(huì)話 2 在此行上執(zhí)行UPDATE或DELETE操作。 在這種情況下,會(huì)話 2 的UPDATE 或 DELETE將檢測行移動(dòng)并引發(fā)序列化失敗錯(cuò)誤(該錯(cuò)誤始終返回 SQLSTATE 代碼"40001")。 如果發(fā)生這種情況,應(yīng)用程序可能希望重試事務(wù)。 在通常情況下,表沒有分區(qū)或沒有行移動(dòng),會(huì)話 2 將標(biāo)識(shí)新更新的行,并執(zhí)行UPDATE/DELETE在此新行版本中。

請(qǐng)注意,雖然行可以從本地分區(qū)移動(dòng)到外表分區(qū)(如果外數(shù)據(jù)包裝器支持元組路由),但它們不能從外表分區(qū)移動(dòng)到另一個(gè)分區(qū)。

總結(jié) 

到此這篇關(guān)于Postgresql使用update語句的文章就介紹到這了,更多相關(guān)Postgresql使用update內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何在Neo4j與PostgreSQL間實(shí)現(xiàn)高效數(shù)據(jù)同步

    如何在Neo4j與PostgreSQL間實(shí)現(xiàn)高效數(shù)據(jù)同步

    本文詳細(xì)介紹了如何在Neo4j與PostgreSQL兩種數(shù)據(jù)庫之間實(shí)現(xiàn)高效數(shù)據(jù)同步,從基礎(chǔ)概念到全量與增量同步的實(shí)現(xiàn)策略,結(jié)合具體代碼與實(shí)踐案例,為開發(fā)者提供了全面的指導(dǎo),感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • 解決PostgreSQL 執(zhí)行超時(shí)的情況

    解決PostgreSQL 執(zhí)行超時(shí)的情況

    這篇文章主要介紹了解決PostgreSQL 執(zhí)行超時(shí)的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • SpringBoot連接使用PostgreSql數(shù)據(jù)庫的方法

    SpringBoot連接使用PostgreSql數(shù)據(jù)庫的方法

    這篇文章主要介紹了SpringBoot連接使用PostgreSql數(shù)據(jù)庫的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • PostgreSQL 實(shí)現(xiàn)將多行合并轉(zhuǎn)為列

    PostgreSQL 實(shí)現(xiàn)將多行合并轉(zhuǎn)為列

    這篇文章主要介紹了PostgreSQL 實(shí)現(xiàn)將多行合并轉(zhuǎn)為列的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • PostGreSql 判斷字符串中是否有中文的案例

    PostGreSql 判斷字符串中是否有中文的案例

    這篇文章主要介紹了PostGreSql 判斷字符串中是否有中文的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • PostgreSQL中ON?CONFLICT的使用及一些擴(kuò)展用法

    PostgreSQL中ON?CONFLICT的使用及一些擴(kuò)展用法

    Postgres?ON?CONFLICT是PostgreSQL數(shù)據(jù)庫中的一個(gè)功能,用于處理插入或更新數(shù)據(jù)時(shí)的沖突情況,下面這篇文章主要給大家介紹了關(guān)于PostgreSQL中ON?CONFLICT的使用及一些擴(kuò)展用法的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • PostgreSQL實(shí)戰(zhàn)之啟動(dòng)恢復(fù)讀取checkpoint記錄失敗的條件詳解

    PostgreSQL實(shí)戰(zhàn)之啟動(dòng)恢復(fù)讀取checkpoint記錄失敗的條件詳解

    這篇文章主要給大家介紹了關(guān)于PostgreSQL實(shí)戰(zhàn)之啟動(dòng)恢復(fù)讀取checkpoint記錄失敗的條件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • postgresql初始化之initdb的使用詳解

    postgresql初始化之initdb的使用詳解

    這篇文章主要介紹了postgresql初始化之initdb的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL查看版本信息的操作

    PostgreSQL查看版本信息的操作

    這篇文章主要介紹了PostgreSQL查看版本信息的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 深入理解PostgreSQL的MVCC并發(fā)處理方式

    深入理解PostgreSQL的MVCC并發(fā)處理方式

    這篇文章主要介紹了深入理解PostgreSQL的MVCC并發(fā)處理方式,文中同時(shí)介紹了MVCC的缺點(diǎn),需要的朋友可以參考下
    2014-07-07

最新評(píng)論