PGSQL9.5以上新特性upsert

前言

mysql用习惯了replace into后,突然间用pgsql来开发。结果没有对应语法,查了很多资料以后测试以后总结了语法。

语法

INSERT INTO tablename(col1,....,colN) VALUES(?,?,?) 
ON CONFLICT(唯一键) DO UPDATE  
SET col1=?,colN=?
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在PostgreSQL(简称PGSQL)中,分布式键(Distributed Key)不是标准的SQL概念,通常我们讨论的是分区(Partitioning)和分片(Sharding)。如果你想要在PostgreSQL中实现类似的功能,可能会考虑使用范围分区(Range Partitioning)、列表分区(List Partitioning)或哈希分区(Hash Partitioning)。 以下是创建分区表的基本语法,假设我们有这样一个表`orders`,并希望根据订单ID进行分区: 1. **范围分区**(Range Partitioning): ```sql CREATE TABLE orders ( order_id SERIAL PRIMARY KEY, order_date DATE NOT NULL, ... ) PARTITION BY RANGE (order_id); ``` 你可以添加分区范围,例如: ```sql CREATE TABLE orders_ PARTITION BY RANGE (order_id) ( PARTITION p0 VALUES LESS THAN (1000), PARTITION p1 VALUES LESS THAN (2000), ... ); ``` 2. **列表分区**(List Partitioning): ```sql CREATE TABLE orders ( order_id SERIAL PRIMARY KEY, order_date DATE NOT NULL, ... ) PARTITION BY LIST (order_id) ( PARTITION p0 VALUES IN (1, 2, 3), PARTITION p1 VALUES IN (400, 500, 600), ... ); ``` 3. **哈希分区**(Hash Partitioning): ```sql CREATE TABLE orders ( order_id SERIAL PRIMARY KEY, order_date DATE NOT NULL, ... ) PARTITION BY HASH (order_id); ``` 对于每个类型的分区,都有额外的管理操作,如插入、查询优化器选择等。创建分布式键的概念并不直接存在于PostgreSQL中,但你可以通过这些方式来实现数据在多个服务器之间的分布。 如果你具体想了解如何设置分布式键或者如何在PostgreSQL中实现更复杂的分布式架构,请提供更多信息,以便我能给出更准确的帮助。有关这方面的高级话题,可能涉及到集群配置、表空间管理等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值