通过脚本使列自动递增

时间:2014-06-11 10:59:52

标签: sql oracle oracle11g

我对Oracle环境不熟悉。我有一个以下脚本,用于创建包含少量列的表。

CREATE TABLE CLASS_STUDENT_LECTURES_MAP(
    STUDENT_LECTURES_ID NUMBER(38,0)    NOT NULL, 
    STUDENT_CODE        NUMBER(38,0)    NOT NULL, 
    STUDENT_NAME_DEFINATION_ID  NUMBER(38,0)    NOT NULL, 
    CONSTRAINT STUDENT_LECTURES_ID _PK PRIMARY KEY (STUDENT_LECTURES_ID)
    );

我想要的是让Primary KeySTUDENT_LECTURES_ID成为自动递增列,这可以通过上面的sql脚本实现吗?

SQL Server类似,您可以指定IDENTITY(1,1)以使列自动增加。 oracle有这样的选择吗?

1 个答案:

答案 0 :(得分:1)

在oracle中无法以直接的方式进行自动增量。您将不得不使用解决方法:

  1. 创建表格
  2. CREATE TABLE CLASS_STUDENT_LECTURES_MAP( STUDENT_LECTURES_ID NUMBER(38,0) NOT NULL, STUDENT_CODE NUMBER(38,0) NOT NULL, STUDENT_NAME_DEFINATION_ID NUMBER(38,0) NOT NULL, CONSTRAINT STUDENT_LECTURES_ID _PK PRIMARY KEY (STUDENT_LECTURES_ID) );

    2 .. 创建序列:

    CREATE SEQUENCE INCREMENT_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;

    3 .. 创建触发器:

    `CREATE OR REPLACE TRIGGER table_a_BEFORE_INSERT_TRIGGER 
    BEFORE INSERT ON table_a 
    FOR EACH ROW
    BEGIN
      SELECT increment_seq.NEXTVAL
      INTO   :new.id
      FROM   dual;
    END;
    /`
    

    4 .. 使用插入查询进行测试:

    INSERT INTO CLASS_STUDENT_LECTURES_MAP ( STUDENT_CODE, STUDENT_NAME_DEFINATION_ID) VALUES (10,20);