当前位置: 首页 > news >正文

PostgreSQL:生成-唯一主键id

1. 通过时间戳和随机数拼接生成

select TO_CHAR(NOW(), 'YYYYMMDDHH24MISS') || LPAD(FLOOR(RANDOM() * 1000000)::TEXT, 6, '0') AS unique_id

解析:

  • TO_CHAR(NOW(), ‘YYYYMMDDHH24MISS’):该部分将当前时间 (NOW()) 格式化为 YYYYMMDDHH24MISS 格式,即年(YYYY)、月(MM)、日(DD)、小时(24小时制,HH24)、分钟(MI)、秒(SS)。
    示例输出:20241008153025(表示 2024 年 10 月 8 日 15:30:25)。
    RANDOM() * 1000000:

  • RANDOM() :生成 0 到 1 之间的随机浮点数,乘以 1000000 后,可以得到一个 0 到 999999 之间的随机数。
    FLOOR(RANDOM() * 1000000):

  • FLOOR :将随机数向下取整,保证它是一个整数。
    示例输出:573821。
    LPAD(FLOOR(RANDOM() * 1000000)::TEXT, 6, ‘0’):

  • LPAD(左侧填充)确保随机数总是由 6 位数字组成。如果随机数的位数不足 6 位,则在左侧用 0 补齐。
    示例:如果生成的数字是 23789,则通过 LPAD 补齐为 023789。

  • ||(字符串拼接):将时间戳部分与随机数部分拼接在一起,形成唯一的标识符。

最终输出:

  • 该 SQL 查询会生成一个由当前时间戳和 6 位随机数组合成的唯一 ID。
    例如:20241008153025023789

2. 使用PostgreSQL 支持的标准函数-生成 UUID

简介:

  • UUID(Universally Unique Identifier)是一个128位的标识符,可以保证生成的ID在全球范围内唯一。PostgreSQL 支持生成 UUID 的标准函数。

使用:

  • uuid_generate_v4()函数

    -- 创建拓展
    create extension "uuid-ossp";
    -- 生成UUID值
    SELECT uuid_generate_v4() AS unique_id;
    

    说明:

    • 这里需要先创建 uuid-ossp 扩展,
      执行命令create extension "uuid-ossp"; 才能使用函数uuid_generate_v4()
      这一步注意是否拥有权限,需要权限高的账号才能创建。
    • 特点:
      UUID v4 是基于随机数生成的,通常表示为 36 个字符的字符串(包括连字符),例如:550e8400-e29b-41d4-a716-446655440000。
  • gen_random_uuid()函数

    -- 创建拓展
    create extension "pgcrypto";
    -- 生成UUID值
    SELECT gen_random_uuid() AS unique_id;
    

    说明:

    • 这里需要先创建 pgcrypto 扩展,
      执行命令create extension "pgcrypto"; 才能使用函数gen_random_uuid()
      这一步注意是否拥有权限,需要权限高的账号才能创建。

说明:

  • postgresql 官方文档:如果只是使用随机的uuid, 建议使用 pgcrypto 扩展的 gen_random_uuid() 。
    详见:https://www.postgresql.org/docs/current/uuid-ossp.html

3. 数据库序列实现数字递增

简介:

  • 数据库序列是生成唯一递增数字的一种方式,适合用于单机或少量并发环境。PostgreSQL 内置了 SERIAL 和 BIGSERIAL 类型,自动生成自增主键。
    使用方法:

使用:

-- 创建一个新的序列对象
CREATE SEQUENCE order_seq START 1;
-- 获取递增值
SELECT nextval('order_seq') AS unique_id;

特点:

  • 序列号是连续的、递增的整数,例如:1, 2, 3…。
  • 优点:
    整数类型占用空间小,性能高。
    生成顺序ID,便于排序和索引。
  • 缺点:
    在分布式环境中可能会有冲突。
    需要依赖数据库状态。

4. 其他方法待续…

相关文章:

PostgreSQL:生成-唯一主键id

1. 通过时间戳和随机数拼接生成 select TO_CHAR(NOW(), YYYYMMDDHH24MISS) || LPAD(FLOOR(RANDOM() * 1000000)::TEXT, 6, 0) AS unique_id解析: TO_CHAR(NOW(), ‘YYYYMMDDHH24MISS’):该部分将当前时间 (NOW()) 格式化为 YYYYMMDDHH24MISS 格式&#…...

Swift添加自定义字体

1. 在 Xcode 中添加自定义字体 首先,你需要将自定义字体文件(如 .ttf 或 .otf 文件)添加到项目中。 将字体文件拖放到项目的资源管理器中,确保选中了 "Copy items if needed"。打开 Info.plist 文件,添加一…...

Springboot 整合 Java DL4J 实现企业门禁人脸识别系统

🧑 博主简介:历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,…...

SSTI模板注入+CTF实例

参考文章: 一文了解SSTI和所有常见payload 以flask模板为例-腾讯云开发者社区-腾讯云 (tencent.com) python-flask模块注入(SSTI) - ctrl_TT豆 - 博客园 (cnblogs.com) ssti详解与例题以及绕过payload大全_ssti绕过空格-CSDN博客 1. SSTI(模板注入&…...

iPhone 16 Pro 拆解揭秘:设计改进与维修便利性

苹果最新推出的iPhone 16系列在许多方面都进行了更新和改进,而这次我们要聚焦的是其中的高端型号——iPhone 16 Pro。 这款手机不仅在性能上有所提升,在内部构造上也带来了不少变化,让我们一起来看看这些细节吧。 更容易进入的内部结构 对于…...

Java项目实战II养老||基于Java+Spring Boot+MySQL的社区智慧养老监护管理平台设计与实现(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着老龄化…...

利用FnOS搭建虚拟云桌面,并搭建前端开发环境(二)

利用FnOS搭建虚拟云桌面,并搭建前端开发环境 二 一、docker镜像二、环境配置三、核心环境配置流程文档 利用FnOS搭建虚拟云桌面,并搭建前端开发环境(一) 上一章安装了飞牛FnOS系统,界面如下,这一张配置前端…...

【Python】Qwen-VL-7B box

VLLM-Qwen2-VL-7B-Instruct import cv2# 读取图像 image_path haibaoA.png # 替换为图像的路径 image cv2.imread(image_path)# 定义框的坐标 (x1, y1) 是左上角,(x2, y2) 是右下角 x1, y1 200, 550 # 左上角坐标 x2, y2 799, 750 # 右下角坐标 h, w image.…...

echarts按需引入解决项目大小问题

背景: 按需加载缩减项目大小,提升项目性能和可用性 实现: 创建echarts.js main.js进行配置 页面中引用 效果 全量导入 按需加载:...

天气预报echarts

如上图&#xff0c;可以切换温度&#xff0c;降水量&#xff0c;风力风向和空气质量 <template><el-radio-group v-model"selectedData" change"updateChart"><el-radio-button label"temperature">温度</el-radio-butto…...

Kafka-初识

一、Kafka是什么&#xff1f; Kafka是一个高度可扩展、弹性、容错和安全的分布式流处理平台&#xff0c;由服务器和客户端组成&#xff0c;通过高性能TCP网络协议进行通信。它可以像消息队列一样生产和消费数据。可以部署在裸机硬件、虚拟机和容器上&#xff0c;也可以部署在本…...

Redis的主要的特性和优势 ?

Redis 的主要特性 内存存储&#xff1a;Redis 将数据存储在内存中&#xff0c;这使得读写操作非常快速。它还支持将数据持久化到磁盘&#xff0c;以防止数据丢失。 丰富的数据结构&#xff1a;Redis 不仅支持简单的字符串键值对&#xff0c;还支持更复杂的数据结构&#xff0c…...

yolov5-7.0模型DNN加载函数及参数详解(重要)

yolov5-7.0模型DNN加载函数及参数详解&#xff08;重要&#xff09; 引言yolov5&#xff08;v7.0&#xff09;1&#xff0c;yolov5.h(加载对应模型里面的相关参数要更改)2&#xff0c;main主程序&#xff08;1&#xff09;加载网络&#xff08;2&#xff09;检测推理&#xff0…...

StringEntity 用于将字符串内容作为 HTTP 请求实体(请求体)

StringEntity 类是 Apache HttpClient 库中的一个类&#xff0c;它用于将字符串内容作为 HTTP 请求实体&#xff08;请求体&#xff09;。这个类非常适合用于发送 JSON、XML 或其他需要以字符串形式发送的数据。以下是 StringEntity 类的一些常用方法和代码案例&#xff1a; …...

校园系统校园小程序 论坛校园圈系统失物招领、闲置二手、跑腿外卖等校园圈子系统应该具备有哪些功能

针对校园系统、校园小程序、论坛校园圈系统以及失物招领、闲置二手、跑腿外卖等具体功能&#xff0c;一个综合性的校园圈子系统应该具备以下主要功能&#xff1a; 前后端源码查看 一、基础功能 用户注册与登录 提供用户注册和登录功能&#xff0c;支持学生身份验证、手机号验…...

[AWS云]kafka调用和创建

背景:因为因为公司的项目需要使用AWS的kafka&#xff0c;但是在创建和使用过程中都遇到了一些报错和麻烦&#xff0c;毕竟老外的东西&#xff0c;和阿里云、华为使用起来还是不一样。 一、创建&#xff08;创建的配置过程就略了&#xff0c;就是配置一下可用区、型号&#xff0…...

查看 Excel 应用程序中已打开的 Excel 文件的完整路径

要查看 Excel 应用程序中已打开的 Excel 文件的完整路径&#xff08;全路径&#xff09;&#xff0c;你可以通过以下几种方法获取具体路径&#xff0c;尤其是在 VSTO 应用程序中。 方法1&#xff1a;使用 VSTO Excel 外接程序代码 在 VSTO 外接程序代码中&#xff0c;您可以直接…...

学习 RocketMQ 单机部署、消息发送、消息接收

文章目录 RocketMQ 介绍为什么要使用 MQ &#xff1f;RocketMQ 与其他产品对比vs Kafkavs RabbitMQvs ActiveMQ RocketMQ 重要概念部署 Namesrver、Broker、Dashboard快速入门消息生产者消息消费者 消费模式简单消息1&#xff09;同步发送2&#xff09;异步发送3&#xff09;单…...

【计算机网络】CDN

CDN&#xff08;Content Delivery Network&#xff0c;内容分发网络&#xff09;是一种分布式的服务器网络&#xff0c;旨在通过将内容缓存到多个地理位置的服务器上&#xff0c;加速内容的分发和传递。CDN 的主要目的是减少用户访问网站时的延迟&#xff0c;提升用户体验&…...

数据结构:插入排序

1.插入排序 此排序如打扑克牌一样&#xff1b;每次抓牌&#xff0c;把扑克从前向后扒拉&#xff1b;找到合适的位置插入进去—所以叫插入排序&#xff1b; 时间复杂度&#xff1a;O&#xff08;N^2&#xff09; int arr[10] { 9,8,7,6,5,4,3,2,1,0 };//数据太多就不好写了 …...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...