达梦数据库:“无法变更启动序列号”

本文介绍了解决SQL序列在插入数据时遇到的唯一性约束问题的方法,通过调整序列的步长和初始值,成功避免了重复ID的生成,确保了数据的正确插入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先创建一个默认的序列,SQL:  create sequence s1;

向student表插入数据时,

insert into student(id,sname,sex,age,tel,address) values(s1.nextval,'lvbu','nan',35,'58758','dwhdoiw');

SQL执行失败,提示“违反表[student]唯一性约束”,

查询表的数据,可以看到,id已经取到7了,而此时是s1序列的起始值还是1,所以会出现唯一性约束问题。

那么现在要做的就是修改序列s1的初始值,将其修改为7.

执行SQL:alter sequence  s1 start with 7;系统提示[无法变更启动序列号]

解决方法

1.更改步长(increment)为一个你想让序列增加到的值

alter sequence s1 increment by 6;

2.执行一下查询序列的语句

select  s1.nextval from dual;

查询出的结果如下:

3.然后将步长(increment)改成原来的值,如果没有改回来,那么还是原来的步长。

alter sequence s1 increment by 1;

此时的序列的初始值已经变成7了。

4.再次执行插入语句,提示执行成功。

5.执行查询语句,可以看到已经插入进去的数据了。

说明:调整的基数不是很大的话,可以通过多次执行select  s1.nextval from dual;语句来解决这个问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值