pgsql serial自增序列用法
serial:序列号类型其实不是真正的类型,当声明一个字段为序列号类型时其实是创建了一个序列,INSERT时如果没有给该字段赋值会默认获取对应序列的下一个值。
在有些需要用到一个自增字段来进行排序或通过拖拉行数改变排序的场景,除了建表时的id(主键)也可以定义一个自增的字段来使用。
建表sql:
create table t_test1
(
id serial not null,
name varchar(32),
p_order serial not null,
data varchar(32)
);```
插入模拟数据:
```sql
insert into t_test1 (
name,
data
)values (
'test1335',
'beantest'
);
表中数据,并没有去插入id和p_order这两个字段:
id name p_order data
1 test1333 1 beantest
2 test1334 2 beantest
3 test1335 3 beantest
使用pg_get_serial_sequence函数可以获得serial列的序列名称:
pg_get_serial_sequence('table_name','column_name')
同时需要注意的是:
序列生成器不是事务安全的。意味着如果两个并发数据库连接尝试从序列中获取下一个值,每个客户端获得不同的值。如果一个客户端回滚事务,则该序列值将被弃用,导致序列值不连续。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术