Navicat for Oracle,怎么设置某一字段为自动递增?

用Navicat连接本机Oracle10g数据库,并创建一个user表,表中有个userid字段,为number类型,现在要设置它为自动递增的,应该跟触发器联系在一起,但... 用Navicat连接本机Oracle 10g数据库,并创建一个user表,表中有个userid字段,为number类型,现在要设置它为自动递增的,应该跟触发器联系在一起,但不知道怎么设置,希望得到帮助。 展开
 我来答
匿名用户
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>
198901245631
2015-05-04 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1690万
展开全部
可以通过设置序列(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)“即可。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-05-29
展开全部
直接用oracle 中sequence 自己创建一个序列 然后去递增
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式