PostgreSQL数据库如果不存在则插入,存在则更新

今天在做接手别人项目的时候,有这样的需求,往数据库中插入数据的时候,要满足下面:
1、如果数据库存在一条记录,则将新插入的值,作为更新
2、如果没有这样一条记录,则新增。

以一个字段为判断是否存在。

INSERT INTO test_postgre(id,name,InputTime,age)
VALUES('1','postgre','2018-01-10 22:00:00',24)
ON conflict(id) 
DO UPDATE SET name = 'postgreOk', InputTime ='2018-02-22 12:00:00'

百度看到上面这样的写法,这里做一个记录。以防后续需要。

也说明一下,如果不存在则会新增,VALUES里面的值,如果存在,则会更新name和InputTime字段,当然如果你需要改age,也可以继续在后面加,或者只写age;这个conflict(id)中的id是判断是否存在记录的依据。

参考:http://www.cnblogs.com/ShaYeBlog/p/6427616.html

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
对于 MyBatis 和 PostgreSQL,你可以使用以下方法来实现数据更新新增的操作: 1. 使用 INSERT INTO ... ON CONFLICT DO UPDATE 语句:这是 PostgreSQL 提供的一种语法,用于在插入数据时检查冲突,并在冲突时执行更新操作。 ```java <insert id="insertOrUpdate" parameterType="YourEntity"> INSERT INTO your_table (id, column1, column2) VALUES (#{id}, #{column1}, #{column2}) ON CONFLICT (id) DO UPDATE SET column1 = #{column1}, column2 = #{column2} </insert> ``` 在上述示例中,我们首先尝试插入数据,如果发生冲突(即 id 已存在),则执行更新操作。 2. 使用动态 SQL 和 SELECT 语句:这种方法在插入数据前首先执行 SELECT 查询,如果存在数据则执行 UPDATE 操作,否则执行 INSERT 操作。 ```java <select id="checkExistence" parameterType="YourEntity" resultType="int"> SELECT COUNT(*) FROM your_table WHERE id = #{id} </select> <update id="update" parameterType="YourEntity"> UPDATE your_table SET column1 = #{column1}, column2 = #{column2} WHERE id = #{id} </update> <insert id="insert" parameterType="YourEntity"> INSERT INTO your_table (id, column1, column2) VALUES (#{id}, #{column1}, #{column2}) </insert> ``` 在上述示例中,首先执行 SELECT 查询来检查数据是否存在,然后根据查询结果选择执行 UPDATE 或 INSERT。 以上两种方法都可以实现在数据存在时进行更新不存在时进行新增的逻辑。根据你的具体需求和数据库表结构,选择适合的方法进行操作即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值