kingbase重置序列

1、建立表接口

drop table if exists ncc_apple;
CREATE TABLE ncc_apple (
    id BIGSERIAL NOT null PRIMARY KEY,
    apple_name VARCHAR(128),
    creator BIGINT,
    create_time timestamp DEFAULT CURRENT_TIMESTAMP,
    updater INT8,
    update_time timestamp DEFAULT CURRENT_TIMESTAMP,
    updated_dept BIGINT,
    deleted SMALLINT DEFAULT 0
);

2、查看表接口的序列字段,以及名称

--nextval('ncc_apple_id_seq'::regclass)

3、插入id为1的数据,库里存在id为1的1条数据

INSERT INTO ncc_apple
(id, apple_name)
VALUES(1, '系统执行');

SELECT * FROM ncc_apple;

4、清除数据

--truncate 表之后,序列不受影响

TRUNCATE TABLE ncc_apple;

5、再次插入id为1 的数据,出现违反唯一约束(这种场景出现在:当项目需要导入库内数据,且表与表之间的关系式根据主键id来的,那么数据就会存在重复)

6、解决重复问题,重置序列的最大值

【重置序列的最大值的语句具体讲解如下:】

从1中可以看出,这里的表名为ncc_apple, 主键为id,因因此是max(id), id主键的类型是BIGINT, 且默认值nextval('ncc_apple_id_seq'::regclass),所以,setval('ncc_apple_id_seq', .....)。

--重置序列的最大值
select setval('ncc_apple_id_seq',(select max(id) from  ncc_apple)::BIGINT);

注意:如果要手动重置序列:ALTER SEQUENCE ncc_apple_id_seq RESTART WITH 2;

这里使用这句设置为从2开始,不起作用,因此这里本人选择使用重置序列的最大值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@蓝眼睛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值