0

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

我创建了一个类似的表:

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 序列中被赋值。

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

谢谢。

4

1 回答 1

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;
于 2012-12-25T11:35:06.963 回答