我对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 Key
列STUDENT_LECTURES_ID
成为自动递增列,这可以通过上面的sql脚本实现吗?
与SQL Server
类似,您可以指定IDENTITY(1,1)
以使列自动增加。 oracle有这样的选择吗?
答案 0 :(得分:1)
在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)
);
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);