好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > PostgreSQL upsert(插入更新)數據的操作詳解

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

熱門標簽:美容工作室地圖標注 外呼調研系統 地圖標注和圖片名稱的區別 重慶自動外呼系統定制 打電話智能電銷機器人授權 合肥公司外呼系統運營商 海豐有多少商家沒有地圖標注 辦公外呼電話系統 漯河外呼電話系統

本文介紹如何使用PostgreSQL upsert特性插入或當被插入數據已存在則更新數據。

1. 介紹PostgreSQL upsert

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

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

該語法中target可以是下面列舉內容之一:

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

action可能為下面兩者之一:

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

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

2. PostgreSQL upsert示例

下面語句創建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');

假設現在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;

假設當記錄已存在時你需要連接新的郵箱至原郵箱,這時update動作:

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

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

3. 總結

本文介紹通過INSERT ON CONFLICT實現PostgreSQL插入更新特性。

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

您可能感興趣的文章:
  • 使用postgresql 模擬批量數據插入的案例
  • 使用Postgresql 實現快速插入測試數據
  • postgreSQL數據庫 實現向表中快速插入1000000條數據
  • Python隨機生成數據后插入到PostgreSQL
  • postgres 使用存儲過程批量插入數據的操作

標簽:錦州 株洲 珠海 衡陽 烏海 來賓 晉城 蚌埠

巨人網絡通訊聲明:本文標題《PostgreSQL upsert(插入更新)數據的操作詳解》,本文關鍵詞  PostgreSQL,upsert,插入,更新,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PostgreSQL upsert(插入更新)數據的操作詳解》相關的同類信息!
  • 本頁收集關于PostgreSQL upsert(插入更新)數據的操作詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 91国模少妇一区二区三区| 伊人成人在线| 夜夜躁爽日日躁狠狠躁视频| 无遮无挡很黄很污| 男女交性45分钟视频在线观看| 美女下面无遮挡| 国产日产久久久久久精品加勒比| www.草莓视频在线观看| 偷偷鲁视频| 欧美影院一区| 慈芬好爽?好紧?宝贝别夹阿昌| 3dXXXx同人XXXx魅魔动画| 国产精品视频专区| 我和公乱韩国电影| 日本三级中国三级99人妇网站| 啊灬啊灬快好深叫床视频| 男女交性视频在线直播| 自拍偷拍网| 午夜无遮挡怕怕怕免费视频| 国产色情性黄?片视频免费视频| 人妻制服视频一区二区宣宣影视| 天天爽夜夜春| 粉粉嫩嫩是AABB| 国产精品 欧美在线 另类小说| 女人18级毛片久久免费观看| 日韩美视频网站| 被健身房教练玩晕小茹| 黄视频网站免费观看| 性欧美video高清| 任你躁香蕉精品视频免费播放量 | 5544444亚洲成Av人片| 欧美变态杂交xxx| 99热最新网址| 韩国三级私人电影网717| 狼色精品人妻在线视频网站 | 初爱视频免费教程| 大地影视在线观看免费播放| 人妻少妇偷人精品视频奶茶AV| 浓精喷进老师黑色丝袜图片| 日本流氓片| 酒巷笙歌打臂缝姜|