建议使用sequence 如果你只是加个编号,也可以 select a.*, rownum from a 但是要注意这个rownum不是对记录唯一的,而是对结果集编号而已
使用sequence。 insert into tab(id) values (sequence.nextval);
怎么创建 sequencecreate sequence SEQ_1 minvalue 1 maxvalue 999999999999999999999999999 start with 1 increment by 1 cache 20;
DROP SEQUENCE TEST.SEQ_STUDENT_ID;CREATE SEQUENCE SEQ_STUDENT_ID START WITH 5 MAXVALUE 1E27 MINVALUE 0 NOCYCLE NOCACHE NOORDER;CREATE TABLE STUDENT_INFO ( ID NUMBER NOT NULL, NAME VARCHAR2(50 BYTE), SEX VARCHAR2(10 BYTE), AGE NUMBER, BIRTHDAY DATE, PHONE VARCHAR2(20 BYTE) ) CREATE OR REPLACE TRIGGER TG_STUDENT_INFO BEFORE INSERT ON STUDENT_INFO REFERENCING OLD AS old NEW AS new FOR EACH ROW BEGIN IF :new.ID IS NULL THEN SELECT SEQ_STUDENT_ID.NEXTVAL INTO :new.ID FROM dual; END IF; END;
create sequence myseq minvalue 1 maxvalue 999999 start with 1 increment by 1;create table t(id number); insert into t values(myseq.nextval);
如果你只是加个编号,也可以
select a.*, rownum from a
但是要注意这个rownum不是对记录唯一的,而是对结果集编号而已
insert into tab(id) values (sequence.nextval);
怎么创建 sequencecreate sequence SEQ_1
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 20;
START WITH 5
MAXVALUE 1E27
MINVALUE 0
NOCYCLE
NOCACHE
NOORDER;CREATE TABLE STUDENT_INFO
(
ID NUMBER NOT NULL,
NAME VARCHAR2(50 BYTE),
SEX VARCHAR2(10 BYTE),
AGE NUMBER,
BIRTHDAY DATE,
PHONE VARCHAR2(20 BYTE)
)
CREATE OR REPLACE TRIGGER TG_STUDENT_INFO
BEFORE INSERT ON STUDENT_INFO
REFERENCING OLD AS old NEW AS new
FOR EACH ROW
BEGIN
IF :new.ID IS NULL THEN
SELECT SEQ_STUDENT_ID.NEXTVAL
INTO :new.ID
FROM dual;
END IF;
END;
insert into t values(myseq.nextval);
两个步骤;
1.创建个SEQUENCE
2.创建个BEFORE INSERT的TRIGGERThanks
Hima
取nextval值就是自动增长了
create sequence myseq minvalue 1 maxvalue 999999 start with 1 increment by 1;create table t(id number);
insert into t values(myseq.nextval);
create sequence SEQ_1
minvalue 1(最小值)
maxvalue 999999999(最大值)
start with 1 (最哪个数开始)
increment by 1 (每次递增的数字)
cache 20;