首先创建一个默认的序列,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;语句来解决这个问题。