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

Oracle11g oracle上的自动增量(是否需要添加此语句?),oracle11g,sequence,auto-increment,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)); 我没有为studioid定义类型,因为它将在我为这个表添加的studio_

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

我创建了一个如下表:

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));

我没有为
studioid
定义类型,因为它将在我为这个表添加的studio_seq序列中赋值

我的问题是,我是否也应该在上表的任何地方写自动增量


谢谢。

您必须像使用触发器一样使用触发器

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;
可能重复的
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;