Postgre SQL数据库实现有记录则更新无记录就新增

发布时间:2025-05-15 13:00:08 作者:益华网络 来源:undefined 浏览量(2) 点赞(2)
摘要:在PostgreSQL中使用on conflict关键字,可以很方便地实现有则更新无则新增的功能: 创建一张测试表,id为自增主键,cust_id为用户id,name为用户名称: createtabletest_cust(idserialprimarykey,cust_idint,name&nbs

 在PostgreSQL中使用on conflict关键字,可以很方便地实现有则更新无则新增的功能:

创建一张测试表,id为自增主键,cust_id为用户id,name为用户名称:

create table test_cust (id serial primary key, cust_id int, name varchar(20)); 

为字段cust_id创建唯一约束:

create unique index idx_tb_cust_id_unq on test_cust( cust_id); 

向表中新增三条记录:

insert into test_cust ( cust_id,name) values (1, a); insert into test_cust ( cust_id,name) values (2, b); insert into test_cust ( cust_id,name) values (3, c); select * from test_cust;

 

再次向表中增加cust_id为3的记录时,由于cust_id有唯一约束,新增记录会报错:

insert into test_cust ( cust_id,name) values (3, b); 

 

使用on conflict语句实现更新cust_id为3的记录,将该用户的name修改为e:

insert into test_cust ( cust_id,name) values (3, e) on conflict(cust_id) do update set name=e; select * from test_table;

 

如果有记录的时候不做任何操作,没有记录则新增,可以这样来实现:

insert into test_cust ( cust_id,name) values (3, e) on conflict(cust_id) do nothing; 

需要注意的是:conflict(cust_id) 中的字段cust_id必须创建有唯一约束。

定期更新,和你一起每天进步一点点!

二维码

扫一扫,关注我们

声明:本文由【益华网络】编辑上传发布,转载此文章须经作者同意,并请附上出处【益华网络】及本页链接。如内容、图片有任何版权问题,请联系我们进行处理。

感兴趣吗?

欢迎联系我们,我们愿意为您解答任何有关网站疑难问题!

您身边的【网站建设专家】

搜索千万次不如咨询1次

主营项目:网站建设,手机网站,响应式网站,SEO优化,小程序开发,公众号系统,软件开发等

立即咨询 15368564009
在线客服
嘿,我来帮您!