ORACLE下触发器实现主键自增
方法一:(SQL语句需要包含自增字段)
1. 创建自增序列:
CREATE SEQUENCE BOOTTIME_sequence
INCREMENT BY 1
START WITH 1
NOMAXVALUE
nocycle
nocache
注释:
BOOTTIME_sequence: 自增序列名称,BOOTTIME为表明
INCREMENT BY 1 : 每次加几个
START WITH 1 : 从1开始计数
NOMAXVALUE: 不设置最大值
NOCYCLE : 一直累加,不循环
一旦定义了emp_sequence(此处为 BOOTTIME_sequence ),你就可以用CURRVAL,NEXTVAL.
CURRVAL=返回 sequence的当前值。
NEXTVAL=增加sequence的值,然后返回 sequence 值。
2. 插入数据操作:实现ID自增,SQL语句需要填写 自增字段
insert into BOOTTIME(
ID,
EQUIPMENT_ID,
STARTTIME,
STOPTTIME,
TOTALTIME,
BDATE)
values(
BOOTTIME_sequence.nextval,
sysdate,
(null),
'2017-03-21' )
方法二:(SQL语句需要不用包含自增字段)
1. 创建自增序列:
CREATE SEQUENCE
BOOTTIME_sequence
INCREMENT BY 1
START WITH 1
NOMAXVALUE
nocycle
nocache
注释:
一旦定义了emp_sequence(此处为 BOOTTIME_sequence ),你就可以用CURRVAL,NEXTVAL.
CURRVAL=返回 sequence的当前值。
NEXTVAL=增加sequence的值,然后返回 sequence 值。
2. 创建触发器:
create or replace trigger BOOTTIME_trigger
before insert on BOOTTIME
for each row
begin
select BOOTTIME_sequence.nextval into :new.ID from dual;
end;
3. 插入数据操作:实现ID自增,以下插入语句中不用填写自增项 ID
insert into BOOTTIME(
EQUIPMENT_ID,
STARTTIME,
TOTALTIME,BDATE)
values(
59635,
(null),
'2017-03-21' )