oracle上的自动增量(需要添加此语句吗?)

时间:2012-12-25 11:01:38

标签: oracle11g sequence auto-increment

我们是否需要为主键添加自动增量语句?如果是的话,它是如何管理的?

我创建了一个表格,如:

CREATE TABLE STUDIO
(STUDIOID NOT NULL,
NAME VARCHAR2(20),
ADDRESS VARCHAR2(50),
PHONE NUMBER(11),
URL VARCHAR2(20),
CONSTRAINT STUDIO_STUDIOID_pk PRIMARY KEY(STUDIOID));

 CREATE SEQUENCE STUDIO_SEQ
  MINVALUE 1
  MAXVALUE 999999
  START WITH 1
  INCREMENT BY 1
  CACHE 10;

我没有为studioid定义一个类型,因为它将在我为此表添加的studio_seq序列中进行估值。

我的问题是,我是否还要在上表中的任何位置写自动增量?

感谢。

1 个答案:

答案 0 :(得分:0)

你必须使用像

这样的触发器
create or replace TRIGGER STUDIO_trg 
BEFORE INSERT
ON STUDIO 
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
   tmpvar   NUMBER;
BEGIN
   tmpvar := 0;
   SELECT SEQUENCE STUDIO_SEQ.NEXTVAL
     INTO tmpvar
     FROM DUAL;

   :NEW.STUDIOID := tmpvar;
END TRIGGER STUDIO_trg;