pgsql数据库手写自动生成雪花id函数教程

pgsql的雪花id函数实现

先建立雪花id序列

CREATE SEQUENCE "public"."assign_id_seq" 
INCREMENT 1
MINVALUE  1
MAXVALUE 99999999999999999
START 1
CACHE 1
CYCLE ;

ALTER SEQUENCE "public"."assign_id_seq" OWNER TO "postgres";

后建立生成雪花id的函数


CREATE OR REPLACE FUNCTION "public"."snow_next_id"(OUT "result" int8)
  RETURNS "pg_catalog"."int8" AS $BODY$
DECLARE
   our_epoch bigint := 1314220021721;

   seq_id bigint;
   now_millis bigint;
   shard_id int := 5;
BEGIN
   seq_id := nextval('assign_id_seq') % 1024;
   SELECT FLOOR(EXTRACT(EPOCH FROM clock_timestamp()) * 1000) INTO now_millis;
   result := (now_millis - our_epoch) << 23;
   result := result | (shard_id << 10);
   result := result | (seq_id);
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

ALTER FUNCTION "public"."snow_next_id"(OUT "result" int8) OWNER TO "postgres";


函数使用

SELECT snow_next_id();

输出结果

数据库表id主键设置默认值

ok,这样就可以,插入数据时候,自动生成雪花id了!!! 

补充知识

PostgreSQL是一种免费且开源的关系型数据库管理系统,广泛应用于各种大中小型企业和项目。在本文中,我将详细介绍PostgreSQL数据库的各个方面。

1. 数据类型

PostgreSQL提供了丰富的数据类型,包括整型、浮点型、日期/时间型、字符串型、布尔型等。此外,它还支持数组、范围、JSON、XML等复杂数据类型,以满足不同场景下的需求。

2. 表和模式

在PostgreSQL中,数据以表的形式存储。每个表都有自己的结构和列定义。您可以为表创建索引来提高查询性能。此外,表还可以通过使用外键和约束来保持数据的完整性。

数据库中的表可以按照所属的模式进行组织。模式是一种逻辑上的容器,用于将相关的表和其他数据库对象分组。

3. 查询语言

PostgreSQL使用SQL作为其查询语言。除了标准的SQL功能外,PostgreSQL还提供了许多扩展功能,例如窗口函数、全文搜索、地理空间索引等。您可以使用SELECT语句进行数据检索,使用INSERT、UPDATE和DELETE语句进行数据操作。

4. 事务处理

PostgreSQL支持ACID(原子性、一致性、隔离性和持久¥¥¥务。这意味着您可以将多个数据库操作组合成一个逻辑上的单元,以确保数据的完整性和一致性。如果在事务进行过程中发生错误,您可以使用ROLLBACK语句回滚到事务开始前的状态。

5. 安全性

PostgreSQL提供了丰富的安全功能来保护您的数据。您可以使用角色和权限管理来限制对数据库对象的访问。此外,还可以通过加密传输和存储的方式来保护敏感数据。

6. 扩展性

PostgreSQL具有良好的扩展性,允许根据需求进行定制化开发。您可以编写自定义函数、触发器、存储过程等来增强数据库的功能。此外,PostgreSQL还支持插件机制,使得第三方开发者可以开发各种插件来扩展数据库的功能。

7. 高可用性和容错能力

PostgreSQL提供了多种高可用性和容错能力的解决方案。其中包括流复制、逻辑复制、热备份和基于时间点恢复等。这些功能可以确保数据库在故障情况下具有较高的可用性,并且可以快速进行恢复。

8. 性能优化

PostgreSQL提供了一系列性能优化工具和技术帮助您提升数据库的性能。其中包括查询优化器、自动化的统计信息收集、并行执行等。此外,您还可以使用Explain语句来分析查询计划,以找出潜在的性能瓶颈。

9. 开发生态系统

PostgreSQL有一个活跃的开发生态系统,有许多第三方工具和库可供使用。这些工具和库可以帮助您更好地管理和开发PostgreSQL数据库。

总结一下,PostgreSQL是一个功能强大、稳定可靠的关系型数据库管理系统。它提供了丰富的功能和强大的扩展性,适用于各种各样的应用场景。无论是小型项目还是大型企业级系统,PostgreSQL都是一个值得考虑的选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泰山AI

原创不易,感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值