oracle 自动增长

时间:2022-08-12 20:59:01

在SQLSERVER和MYSQL里面自动增长字段直接设置就可以。在ORACLE里面就复杂多了。特别是我这样的初学者,不过网络是最好的老师,看了很多相关介绍,本人使用的是使用触发器。具体如下:

首先要创建序列

CREATE SEQUENCE my_seq          ----以my_seq为名创建序列
START WITH 1                  ----从1开始递增,可以是其他数字
INCREMENT BY 1                   ----步进为1
MAXVALUE 99999999999 [NOMAXVALUE]  ----递增的最大值,NOMAXVALUE没有最大值
NOCYCLE                   ----CYCLE在有最大值时,达到最大值99999999999后循环从1开始再次递增,NOCYCLE不循环
CACHE 20;                  ----缓存,默认为20

创建触发器

create or replace trigger t_name
before insert
on tablename
for each row
declare
newid number(18,0);
begin
select stu.nextval into newid from dual;
:new.tableid:=newid;
end;

触发器一般语句

CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER }
{INSERT | DELETE | UPDATE [OF column [, column …]]}
[OR {INSERT | DELETE | UPDATE [OF column [, column …]]}...]
ON [schema.]table_name | [schema.]view_name
[REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}]
[FOR EACH ROW ]
[WHEN condition]
PL/SQL_BLOCK | CALL procedure_name;

查看、删除、修改序列

select sequence_name from user_sequences  -----查看

DROP SEQUENCE name; ---- 删除
ALTER SEQUENCE emp_sequence ---修改
INCREMENT BY 10
MAXVALUE 10000
CYCLE -- 到10000后从头开始
NOCACHE ;