先做一个序列sequence,然后在表上做一个insert触发器就可以了~ Connected to Oracle9i Enterprise Edition Release 9.2.0.4.0
Connected as report
SQL>
SQL> --创建表
SQL> create table rpt_remind_indi
2 (indi_id varchar2(5) not null,
3 indi_name varchar2(32) not null,
4 indi_sql varchar2(1024) not null);
Table created
SQL>
SQL> --创建序列
SQL> create sequence rpt_indi_id
2 minvalue 1
3 maxvalue 9999
4 start with 1
5 increment by 1
6 order;
Sequence created
SQL>
SQL> --创建触发器
SQL> CREATE OR REPLACE TRIGGER tg_rpt_indi_ins
2 BEFORE INSERT ON rpt_remind_indi
3 FOR EACH ROW
4 BEGIN
5 SELECT lpad(rpt_indi_id.NEXTVAL,5,'0') INTO :NEW.indi_id FROM DUAL;
6 END tg_rpt_indi_ins;
7 /
Trigger created
SQL>
SQL> insert into rpt_remind_indi (indi_name,indi_sql) values ('test indi','test sql');
1 row inserted
SQL> commit;
Commit complete
SQL> select * from rpt_remind_indi;
INDI_ID INDI_NAME INDI_SQL
------- -------------------------------- -----------------------------------------------------
00001 test indi test sql
SQL>
可以通过设置序列(sequence)的形式实现:
第一步:创建sequence,让 INCREMENT BY增长速度为1,START WITH(开始值为 1)。创建sequence语句如下:
CREATE SEQUENCE SEQ_NO
MINVALUE 1 --最小值
NOMAXvalue -----没有最大值
INCREMENT BY 1 ----每次递增1
START WITH 1 -----开始值为1
NOCACHE ----------不缓存
NOCYCLE ; ---------不循环
第二步:每次插入的时候直接
”insert into tablename(ID) values(SEQ_NO.nextVal)“即可。
直接用oracle 中sequence 自己创建一个序列 然后去递增