华山论剑之 PostgreSQL sequence (一)

本文是关于 PostgreSQL sequence 的详细讲解,包括创建 sequence 的两种方式:直接创建和通过 serial 创建,以及 serial 与 bigserial 的区别。文章还探讨了使用 serial 的潜在问题和在数据库运维中的注意事项。
摘要由CSDN通过智能技术生成

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475

前言

本文是 sequence 系列继三大数据库 sequence 之华山论剑 (Oracle PostgreSQL MySQL sequence 十年经验总结) 之后的第二篇,主要分享一下 PostgreSQL 中关于 sequence 的一些经验。

测试环境准备

以下测试是在 PostgreSQL 11 中进行。

通过以下 SQL 创建:

测试用户: alvin,普通用户,非 superuser

测试数据库: alvindb,owner 是 alvin

测试 schema: alvin,owner 也是 alvin

这里采用的是 user 与 schema 同名,结合默认的 search_path("$user", public),这样操作对象(table, sequence, etc.)时就不需要加 schema 前缀了。



|  | postgres=# CREATE USER alvin WITH PASSWORD 'alvin'; |
|  | CREATE ROLE |
|  | postgres=# CREATE DATABASE alvindb OWNER alvin; |
|  | CREATE DATABASE |
|  | postgres=# \c alvindb |
|  | You are now connected to database "alvindb" as user "postgres". |
|  | alvindb=# CREATE SCHEMA alvin AUTHORIZATION alvin; |
|  | CREATE SCHEMA |
|  | alvindb=# \c alvindb alvin |
|  | You are now connected to database "alvindb" as user "alvin". |
|  | alvindb=> SHOW search\_path; |
|  |  search\_path  |
|  | ----------------- |
|  |  "$user", public |
|  | (1 row) |


创建 sequence 的两种方式

sequence 常规用途是用作主键序列的生成。下面通过通过创建 sequence 及表来讨论 sequence 创建方式。

创建 sequence 方式一 直接创建

下面是一种简单方式直接创建 sequence 及表。



|  | alvindb=> CREATE SEQUENCE tb\_test\_sequence\_test\_id\_seq; |
|  | CREATE SEQUENCE |
|  | alvindb=> |
|  | CREATE TABLE tb\_test\_sequence ( |
|  |  test\_id INTEGER DEFAULT nextval('alvin.tb\_test\_sequence\_test\_id\_seq') PRIMARY KEY, |
|  |  create\_time TIMESTAMP DEFAULT clock\_timestamp() |
|  | ); |
|  | CREATE TABLE |


查看已创建的对象



|  | alvindb=> \d |
|  |  List of relations |
|  |  Schema | Name | Type | Owner  |
|  | --------+------------------------------+----------+------- |
|  |  alvin | tb\_test\_sequence\_test\_id\_seq | sequence | alvin |
|  |  alvin | tb\_test\_sequence | table | alvin |
|  | (2 rows) |


查看已创建对象的结构



|  | alvindb=> \d tb\_test\_sequence |
|  | Table "alvin.tb\_test\_sequence" |
|  | Column | Type | Collation | Nullable | Default |
|  | 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值