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')

同时需要注意的是:

序列生成器不是事务安全的。意味着如果两个并发数据库连接尝试从序列中获取下一个值,每个客户端获得不同的值。如果一个客户端回滚事务,则该序列值将被弃用,导致序列值不连续。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值