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

PostgreSQL upsert(插入更新)數(shù)據(jù)的操作詳解

 更新時間:2021年01月05日 12:14:12   作者:neweastsun  
這篇文章主要介紹了PostgreSQL upsert(插入更新)教程詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

本文介紹如何使用PostgreSQL upsert特性插入或當(dāng)被插入數(shù)據(jù)已存在則更新數(shù)據(jù)。

1. 介紹PostgreSQL upsert

在關(guān)系型數(shù)據(jù)庫中,upsert是一個組合詞,即當(dāng)往表中插入記錄,如果該記錄已存在則更新,否則插入新記錄。為了使用該特性需要使用INSERT ON CONFLICT語句:

INSERT INTO table_name(column_list) 
VALUES(value_list)
ON CONFLICT target action;

該語法中target可以是下面列舉內(nèi)容之一:

  • (column_name) – 列名
  • ON CONSTRAINT constraint_name – 唯一約束的名稱
  • WHERE predicate – 帶謂詞的where子句.

action可能為下面兩者之一:

DO NOTHING – 如果行已存在表中,不執(zhí)行任何動作.
DO UPDATE SET column_1 = value_1, … WHERE condition – 更新表中一些字段.

注意:ON CONFLICT子句僅從PostgreSQL 9.5版本才有效。如果需用在之前版本,需要使用其他方法實現(xiàn)。

2. PostgreSQL upsert示例

下面語句創(chuàng)建customers表,演示PostgreSQL upsert特性:

DROP TABLE IF EXISTS customers;

CREATE TABLE customers (
	customer_id serial PRIMARY KEY,
	name VARCHAR UNIQUE,
	email VARCHAR NOT NULL,
	active bool NOT NULL DEFAULT TRUE
);

customers 表包括四個字段customer_id, name, email, active,name字段有唯一約束確保名稱唯一。

下面插入語句新增幾條記錄:

INSERT INTO 
 customers (name, email)
VALUES 
 ('IBM', 'contact@ibm.com'),
 ('Microsoft', 'contact@microsoft.com'),
 ('Intel', 'contact@intel.com');

假設(shè)現(xiàn)在Microsoft 修改email字段,從 contact@microsoft.com 到 hotline@microft.com。我們可以使用update更新語句,因為需要演示upsert特性,這里使用INSERT ON CONFLICT語句:

INSERT INTO customers (NAME, email)
VALUES('Microsoft','hotline@microsoft.com') 
ON CONFLICT ON CONSTRAINT customers_name_key 
DO NOTHING;

上面語句表示如果名稱表中存在,則什么都不做。下面語句與上面等價,但使用name列代替唯一約束名稱:

INSERT INTO customers (name, email)
VALUES('Microsoft','hotline@microsoft.com') 
ON CONFLICT (name) 
DO NOTHING;

假設(shè)當(dāng)記錄已存在時你需要連接新的郵箱至原郵箱,這時update動作:

INSERT INTO customers (name, email)
VALUES('Microsoft','hotline@microsoft.com') 
ON CONFLICT (name) 
DO 
 UPDATE SET email = EXCLUDED.email || ';' || customers.email;

這里使用EXCLUDED虛擬表,其包含我們要更新的記錄,也就是新記錄(相對于原記錄customers)。等式右邊字段需要表名進(jìn)行區(qū)分,才不會報字段不明確錯誤。
讀者可以自行驗證結(jié)果是否如你所愿。

3. 總結(jié)

本文介紹通過INSERT ON CONFLICT實現(xiàn)PostgreSQL插入更新特性。

到此這篇關(guān)于PostgreSQL upsert(插入更新)教程詳解的文章就介紹到這了,更多相關(guān)PostgreSQL upsert內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在postgresql數(shù)據(jù)庫中創(chuàng)建只讀用戶的操作

    在postgresql數(shù)據(jù)庫中創(chuàng)建只讀用戶的操作

    這篇文章主要介紹了在postgresql數(shù)據(jù)庫中創(chuàng)建只讀用戶的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 淺談PostgreSQL消耗的內(nèi)存計算方法

    淺談PostgreSQL消耗的內(nèi)存計算方法

    這篇文章主要介紹了淺談PostgreSQL消耗的內(nèi)存計算方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 基于postgresql數(shù)據(jù)庫鎖表問題的解決

    基于postgresql數(shù)據(jù)庫鎖表問題的解決

    這篇文章主要介紹了基于postgresql數(shù)據(jù)庫鎖表問題的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • PostgreSQL定時清理舊數(shù)據(jù)的實現(xiàn)方法

    PostgreSQL定時清理舊數(shù)據(jù)的實現(xiàn)方法

    最近覺得數(shù)據(jù)庫中每日數(shù)據(jù)不需要都保持,只需要保留30天的,所以這篇文章給大家介紹了PostgreSQL定時清理舊數(shù)據(jù)的實現(xiàn)方法,文中通過代碼示例和圖文給大家介紹的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下
    2024-03-03
  • postgresql數(shù)據(jù)庫配置文件postgresql.conf,pg_hba.conf,pg_ident.conf

    postgresql數(shù)據(jù)庫配置文件postgresql.conf,pg_hba.conf,pg_ident.conf

    這篇文章主要為大家介紹了postgresql數(shù)據(jù)庫中三個重要的配置文件postgresql.conf,pg_hba.conf,pg_ident.conf使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • PostgreSQL時間相差天數(shù)代碼實例

    PostgreSQL時間相差天數(shù)代碼實例

    PostgreSQL是一款簡介而又性能強大的數(shù)據(jù)庫應(yīng)用程序,其在日期時間數(shù)據(jù)方面所支持的功能也都非常給力,這篇文章主要給大家介紹了關(guān)于PostgreSQL時間相差天數(shù)的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • postgresql數(shù)據(jù)庫使用說明_實現(xiàn)時間范圍查詢

    postgresql數(shù)據(jù)庫使用說明_實現(xiàn)時間范圍查詢

    這篇文章主要介紹了postgresql數(shù)據(jù)庫使用說明_實現(xiàn)時間范圍查詢,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Postgresql - 查看鎖表信息的實現(xiàn)

    Postgresql - 查看鎖表信息的實現(xiàn)

    這篇文章主要介紹了Postgresql 查看鎖表信息的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 在Ubuntu中安裝Postgresql數(shù)據(jù)庫的步驟詳解

    在Ubuntu中安裝Postgresql數(shù)據(jù)庫的步驟詳解

    PostgreSQL 是一款強大的,開源的,對象關(guān)系型數(shù)據(jù)庫系統(tǒng)。它支持所有的主流操作系統(tǒng),包括 Linux、Unix(AIX、BSD、HP-UX,SGI IRIX、Mac OS、Solaris、Tru64) 以及 Windows 操作系統(tǒng)。本文給大家介紹了在Ubuntu中安裝Postgresql數(shù)據(jù)庫的步驟,需要的朋友可以參考下。
    2017-09-09
  • PostgreSQL查詢修改max_connections(最大連接數(shù))及其它配置詳解

    PostgreSQL查詢修改max_connections(最大連接數(shù))及其它配置詳解

    postgresql數(shù)據(jù)庫最大連接數(shù)是系統(tǒng)允許的最大連接數(shù),當(dāng)數(shù)據(jù)庫并發(fā)用戶超過該連接數(shù)后,會導(dǎo)致新連接無法建立或者連接超時,這篇文章主要給大家介紹了關(guān)于PostgreSQL查詢修改max_connections(最大連接數(shù))及其它配置的相關(guān)資料,需要的朋友可以參考下
    2024-01-01

最新評論

康马县| 万年县| 昌吉市| 红河县| 灵台县| 嫩江县| 临清市| 营山县| 临桂县| 通州区| 北碚区| 邵武市| 淮滨县| 岱山县| 桃江县| 韶关市| 康平县| SHOW| 文水县| 澜沧| 威宁| 元阳县| 土默特右旗| 措勤县| 武城县| 准格尔旗| 句容市| 灵山县| 新余市| 拜城县| 四会市| 色达县| 岑巩县| 新和县| 孙吴县| 天长市| 克什克腾旗| 茶陵县| 临汾市| 隆德县| 嘉善县|