pgsql数据库手写自动生成雪花id函数教程
Posted 洛阳泰山
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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了!!!
以上是关于pgsql数据库手写自动生成雪花id函数教程的主要内容,如果未能解决你的问题,请参考以下文章