Navicat for Oracle,怎么设置某一字段为自动递增?
用Navicat连接本机Oracle10g数据库,并创建一个user表,表中有个userid字段,为number类型,现在要设置它为自动递增的,应该跟触发器联系在一起,但...
用Navicat连接本机Oracle 10g数据库,并创建一个user表,表中有个userid字段,为number类型,现在要设置它为自动递增的,应该跟触发器联系在一起,但不知道怎么设置,希望得到帮助。
展开
3个回答
2013-05-29
展开全部
先做一个序列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>
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)“即可。
第一步:创建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)“即可。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-05-29
展开全部
直接用oracle 中sequence 自己创建一个序列 然后去递增
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询