以前同事每次在ORACLE数据库新增加记录的时候都是要在此之前先来一次:select MAX(id) from t_examineinfo。
感觉挺麻烦且效率低,于是使用触发器来解决这个问题。
先建立一个测试表TEST吧,DDL如下:
create table TEST
(
ID NUMBER not null,
NAME VARCHAR2(10) not null,
SEX VARCHAR2(1) not null
)
再建立一个序列SEQ_T_EXAMINEINFO,DDL如下:
(
ID NUMBER not null,
NAME VARCHAR2(10) not null,
SEX VARCHAR2(1) not null
)
再建立一个序列SEQ_T_EXAMINEINFO,DDL如下:
create sequence SEQ_T_EXAMINEINFO
minvalue 1
maxvalue 9999999999999999999999999999
start with 21
increment by 1
cache 20;
minvalue 1
maxvalue 9999999999999999999999999999
start with 21
increment by 1
cache 20;
然后在刚才建立的表TEST中创建一个名为test_tigger的触发器,DDL如下:
CREATE OR REPLACE TRIGGER test_tigger BEFORE
INSERT ON test FOR EACH ROW BEGIN
SELECT SEQ_T_EXAMINEINFO.NEXTVAL
INTO :new.ID
FROM DUAL;
INSERT ON test FOR EACH ROW BEGIN
SELECT SEQ_T_EXAMINEINFO.NEXTVAL
INTO :new.ID
FROM DUAL;
END test_tigger;
此时,用PLSQL Developer调试一下:insert into test(name,sex) values('wzj','616');
select * from test;
记录已经成功插入,至此实现在Oracle中字段值自动增加1的方法。