前提:要在Oracle中完成主键自动增长的功能,只能依靠序列完成,所有的自动增长操作,需要用户手工完成处理。
序列是一个独立的主体,可以应用到表格的某个字段中(数字字段)。
1、创建序列的语法
CREATE SEQUENCE sequence_name
[INCREMENT BY n][STARTWITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE|NOCYCLE}]
[{CACHE n|NOCACHE}] ;
2、序列字段含义
CREATE SEQUENCE sequence_name 序列名
[INCREMENT BY n][STARTWITH n]
startwith 是确定序列从 n 开始增长, increment by 是每次增长 n。
[{MAXVALUE n | NOMAXVALUE}] 序列最大值
[{MINVALUE n | NOMINVALUE}] 最小值
[{CYCLE|NOCYCLE}] 循环
[{CACHE n|NOCACHE}] ; 缓存
3、实例
create sequence squency_overdue_role
increment by 1
start with 10050
nomaxvalue;
4、序列用法
删除序列
drop sequence squency_overdue_role;
序列常用字段:
nextVal 获取序列下个值
currVal 获取当前序列值
1、创建触发器语法
CREATE[OR REPLACE]TRIGGERtrigger_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|PARENTasparent}]
[FOR EACH ROW ]
[WHEN condition]
PL/SQL_BLOCK|CALL procedure_name;
2、触发器实例
(把序列应用到表 hcs_ca_aging_lines 中,当每次向表 hcs_ca_aging_lines 中插入数据时,序列自动增长。插入语句无需写应用序列的字段,即 AGING_LINE_ID 字段)
create or replace trigger tri_aging_lines
before insert on hcs_ca_aging_lines
for each row
begin
select sequence_aging_lines.nextval into :new.AGING_LINE_ID from dual;
end;
3、删除触发器
drop trigger tri_overdue_rule;
向表中插入数据:
insert into hcs_ca_aging_lines
(AGING_HEADER_ID,LINE_NUMBER,STAGE_NAME,AGING_FROM,AGING_TO)
values
('10209','3','1-30','1','30');