我是sql的初学者。我使用sqlplus来运行sql查询。我使用了简单的查询,但它显示的错误如" MISSING RIGHT PARENTHESIS" 。我的目标是创建自动增量主键。任何人都可以解决错误吗?提前感谢...
create table student(rollno int identity(1,1) primary key,
name varchar(20),marks int);
答案 0 :(得分:0)
对于Oracle,rollno列可以定义为NUMBER(0010)和主键。 然后,您需要添加一个ON INSERT触发器来从SEQUENCE填充rollno。该网站上有许多触发器和序列样本。
答案 1 :(得分:0)
在oracle 12中,您可以使用标识列自动填充您的ID
CREATE TABLE students
(
"ID" NUMBER GENERATED BY DEFAULT AS IDENTITY MINVALUE 1 MAXVALUE 9999999999
INCREMENT BY 1 START WITH 1 ,
"NAME" VARCHAR2(20),
"MARKS" NUMBER(2,0),
CONSTRAINT PK_STUDENTS PRIMARY KEY (ID) ENABLE
);
/
这会创建一个不需要任何触发器的表,并自动填充id列(未指定值),下一个数字最多为99999 ...
如果您正在使用oracle 11及更低版本,则需要在插入时触发,并为id列指定一个值(custom_sequence.nextval)。
CREATE TABLE students
(
"ID" NUMBER(5,0) not null,
"NAME" VARCHAR2(20),
"MARKS" NUMBER(2,0),
CONSTRAINT PK_STUDENTS PRIMARY KEY (ID) ENABLE
);
/
CREATE SEQUENCE SEQ_STUDENTS INCREMENT BY 1 START WITH 1;
/
TRIGGER TC_students
before insert on students
for each row
begin
if (:new.id is null) then
select SEQ_students.nextval into :new.id from dual;
end if;
end;
/