要想清零,必须删掉,然后重新建立。删除:DROP SEQUENCE sequence_name;alter只能修改除start至以外的所有sequence参数;新建:SequenceCREATE SEQUENCE emp_sequence INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 10 NOORDER; --并行时取得序列的顺序
我们提供的服务有:成都网站设计、成都网站建设、微信公众号开发、网站优化、网站认证、冠县ssl等。为上1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的冠县网站制作公司
不管是主机上还是客户端上,使用具备dba角色的用户登录到数据库的sqlplus环境,直接删除用户,就可以把该用户下的而所有对象都删除,包括表、序列。或者使用该用户登录到sqlplus,从user_tables和user_sequences视图中选出所有的表和序列,然后执行drop table ...和drop sequence ...来批量删除所有的表和序列。使用exp和imp工具导出、导入dmp文件。
1、首先要保证该数据库用户有删除序列和新建序列的权限,存储过程中这个权限要显示赋权:
grant
create
sequence
to
数据库用户;
grant
drop
any
sequence
to
数据库用户;
2、存储过程中创建序列和删除序列:
创建序列:
execute
immediate
'create
sequence
序列名'
||
chr(10)
||
'minvalue
1'
||
chr(10)
||
'maxvalue
999999999999999999999999999'
||
chr(10)
||
'start
with
1'
||
chr(10)
||
'increment
by
1'
||
chr(10)
||
'cache
20';
删除序列:
execute
immediate
'drop
sequence
序列名';
如何使用Oracle序列:
Oracle序列(sequence)是一种数据库项,能够生成一个整数序列。通常用于填充数字类型的主键列。
1、创建序列:
CREATE SEQUENCE sequence_name
[START WITH start_num]
[INCREMENT BY increment_num]
[{MAXVALUE maximum_num|NOMAXVALUE}]
[{MINVALUE minimum_num|NOMINVALUE}]
[{CYCLE|NOCYCLE}]
[{CACHE cache_num|NOCACHE}]
[{ORDER|NOORDER}]
其中:
start_num:序列开始整数
increment_num:每次增加的整数增量
maximum:序列最大整数
minimum:序列最小整数
CYCLE:循环生成
NOCYCLE:不循环生成,默认值
cache_num:保存在内存中的整数的个数
NOCACHE:不缓存任何整数
例如:
CREATE SEQUENCE seq_test;(默认值)
CREATE SEQUENCE seq_test START WITH 1 INCREMENT BY 2;
2、使用序列:
SELECT seq_test.nextval FROM dual;
insert into order_status2 (id) values (seq_test.nextval);
3、修改序列:
ALTER SEQUENCE语句来修改序列。可以修改的内容:
不能修改序列的初值
序列的最小值不能大于当前值
序列的最大值不能小于当前值
例如:ALTER SEQUENCE seq_test INCREMENT BY 3;
4、删除序列:
DROP SEQUENCE seq_test;
有两种方法:1.使列失效(业务繁忙时间处理)
2.drop掉一列(业务不繁忙时间)
两个方法可以结合使用,在业务繁忙时候非做不可的时,先把列打个标识使其失效,等业务不繁忙时候再删除掉
具体语法:
失效:alter table 表名 set unused column 字段名;or
alter table 表名 set unused (字段名1[,字段名2,字段名3,...]);
等业务不繁忙时候执行 :alter table 表名 drop column[s] checkpoint;(具体语法也可以百度)
删除列:alter table 表名 drop column 列名;
你是要删除字段里面的序列值?还是删除序列?
如果是删除序列的话,就直接 drop sequence 序列名 ;就行了
如果你是要删除字段里面的序列值,那就只能删除那一条记录了;