oracle类似于sqlserver的自动增量字段怎么弄出来?
id name
-----------
1 qewrwer
2 sdfgdfgg
3 afbsfdhsdf
4 asdfasdfsdf
这样的,如何定义id这个字段成为自动增量?
问题点数:20、回复次数:7Top
1 楼welyngj(无爱)回复于 2004-04-01 13:57:49 得分 5
先创建一个序列:
create sequence seq1
start with 1
increament by 1;
然后;
create trigger tri_on_ins
before insert
on table_name
for each row
begin
select seq1.nextval into :new.id;
end;
/
Top
2 楼likefox(狐妖)回复于 2004-04-01 14:29:54 得分 5
使用序列!!Top
3 楼tssungeng(修斯)回复于 2004-04-01 16:59:07 得分 0
什么地方有详细资料!Top
4 楼tssungeng(修斯)回复于 2004-04-01 17:07:19 得分 0
SYS_GUID
好不好用呀?Top
5 楼cxwsoftware(方宇)回复于 2004-04-01 19:05:33 得分 0
同意welyngj(平平淡淡) !!!!Top
6 楼skystar99047(天星)回复于 2004-04-01 19:11:59 得分 5
方法:
1.创建sequence就可以
create sequence seq_name
minvalue 1
maxvalue 999999999999999999
start with 1
increment by 1
cache 20;
可以直接在插入时调用seq_name.nextval;
如insert into table_name(proid) values(seq_name.nextval);
2.也可以创建触发器(同时要创建sequence):
create or replace trigger trg_name
before insert on table_name
for each row
begin
select seq_name.nextval into :new.proid from dual;
end;
/
Top
7 楼beckhambobo(beckham)回复于 2004-04-01 22:01:17 得分 5
CREATE SEQUENCE USERID INCREMENT BY 1 START WITH 1
MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE
NOCACHE NOORDER;
CREATE OR REPLACE TRIGGER USERADD
BEFORE INSERT ON MEMBERRG
FOR EACH ROW
BEGIN
SELECT LPAD(USERID.NEXTVAL,4,'0') INTO :NEW.NUM FROM DUAL;
END;Top




