首页 > 数据库 >PGSQL 单sql多insert例子

PGSQL 单sql多insert例子

时间:2024-04-15 14:55:37浏览次数:29  
标签:insert uid -- PGSQL bigint sql rid null

-- INIT database
CREATE TABLE msg (
  msgId char(32) PRIMARY KEY comment 'ulid',
  uid bigint not null,
  con text not null
);

create table seum(
  clientId int,
  uid bigint not null,
  msgId char(32) not null,
  co int not null default 0,
  primary key(uid, clientId)
);

create table reum(
  serverId bigint,
  uid bigint not null,
  msgId char(32) not null,
  primary key(uid, serverId)
);

create table reumId(
  uid bigint primary key,
  rid int not null default 0
);

-- just 4 row lock
with
  -- 1.保存im发送信息
  msgInsert as (insert into msg values ('1', 1, '{}')),
  -- 2 从用户接收id表中的id进行自增1
  reumIdInsert as (insert into reumId values(2, 1) on conflict (uid) 
            do update set rid = reumId.rid + 1 returning rid),
  -- 3 用户接收表入库
  reumInsert as (insert into reum values ((select rid from reumIdInsert limit 1),
                          2,'1')),
  -- 4 用户发送表入库,如果用户clientId重复则进行重发次数+1
  seumInsert as (insert into seum values (1, 1, '1',0) on conflict (uid, clientId) 
            do update set co = seum.co + 1 returning co)
  -- 5 server获得重发次数,如果重发次数大于0则事务回滚。
select * from seumInsert;

 

标签:insert,uid,--,PGSQL,bigint,sql,rid,null
From: https://www.cnblogs.com/math-and-it/p/18135958

相关文章

  • Sql Server数据库 读写分离之发布与订阅
    SqlServer数据库读写分离之发布与订阅1、配置分发2、发布3、订阅订阅我在虚拟机上,注意配置分发,发布,订阅我在这里,三个是同一内网,内网一定要联通,服务器的端口也要打开,不然没发访问......
  • Python对Sql Server数据库增删改查
    Python对SqlServer数据库增删改查#如果电脑上没有安装mssql模块,则要安装mssql模块 安装模块的执行命令为 pip install pymssqlimport pymssql def ExecuteNonQuery(sqlStr,paras):    try:        connect = pymssql.connect(server='192.168.1.23:1......
  • SQL深度分页
    当查询语句的偏移量特别大的时候,查询效率就会变的很差,比如limit10offset100和limit10offset100000的效率肯定是不一样的,后者会慢的多那怎么解决呢?先模拟一个例子,表结构如下CREATE TABLE account (  id int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', ......
  • jmeter 连接 sqlserver 数据库
    1. 将下载好的 jar 包放在 jmeter/lib 目录下,测试计划中导入 jar 包 2.添加 JDBCConnectionConfiguration 配置,参数设置如下 3. 线程组中添加 JDBCRequest,请求中连接名字(test)和步骤2 中自定义的名字(test)保持一致 4. 点击运行,查询出对应的结果 问题回......
  • mysql的分区之key,hash分区
    1.hash分区HASH分区主要用来确保数据在预先确定数目的分区中平均分布,要做的只是基于将要被哈希的列值指定一个列值或表达式,以及指定被分区的表将要被分割成的分区数量。hash分区所使用的字段一定要是主键!!createtable表名(.........)engine=MyISAMpartitionbyhash(算......
  • IFreeSql各数据库连接字符串格式
    IFreeSql各数据库连接字符串格式 DataTypeConnectionStringDataType.MySqlDataSource=127.0.0.1;Port=3306;UserID=root;Password=root;InitialCatalog=cccddd;Charset=utf8;SslMode=none;Minpoolsize=1DataType.PostgreSQLHost=192.168.164.10;Port=5432;Us......
  • Flask-SQLAlchemy
    Flask-SQLAlchemyFlask-SQLAlchemy是flask的一个拓展插件,专门添加对SQLAlchemy的支持(ORM,关系对象模型)。使用它可以在flask中使用对象直接与SQLAlchemy进行交互,大大简化了SQLAlchemy与flask结合使用的过程,提供了非常方便的一些操作对象,例如引擎、模型、会话、请求等......
  • 淘宝二面:MySQL里有2000万条数据,但是Redis中只存20万的数据,如何保证redis中的数据都是
    引言在当今互联网领域,尤其在大型电商平台如淘宝这样的复杂分布式系统中,数据的高效管理和快速访问至关重要。面对数以千万计的商品、交易记录以及其他各类业务数据,如何在MySQL等传统关系型数据库之外,借助内存数据库Redis的力量,对部分高频访问数据进行高效的缓存处理,是提升整个系统......
  • mysql交换两列数据
    mysql交换两列数据某ai上居然给出了下面这个语句,这语句是错误的,会把两列换成一样的数据UPDATEt_aSETcol1=col2,col2=col1;下面的语句是可行的updatet_aasa,t_basbseta.col1=b.col2,a.col2=b.col1wherea.id=b.id;下面是使用临时变......
  • 图解 SQL 执行顺序,通俗易懂!
      数据的关联过程from&join&wheregroupbyhaving&whereselectorderbylimit这是一条标准的查询语句: 这是我们实际上SQL执行顺序:我们先执行from,join来确定表之间的连接关系,得到初步的数据where对数据进行普通的初步的筛选groupby分组各组分别执行havi......