ORA-00907: 缺失右括号报错排查——我的建表语句何处有误?
问题分析与解决方案
错误根源在于auto_increment关键字——这是MySQL等数据库的自增字段语法,Oracle数据库并不支持该关键字,Oracle会将其判定为无效语法,从而抛出ORA-00907: missing right parenthesis错误。
修正后的建表语句
适用于Oracle 12c及以上版本
可以直接使用GENERATED AS IDENTITY实现自增:
CREATE TABLE student( student_id int GENERATED AS IDENTITY NOT NULL, name VARCHAR(20) NOT NULL, major VARCHAR(20), PRIMARY KEY(student_id) );
适用于Oracle 12c之前的版本
需要通过「序列+触发器」的方式实现自增:
- 创建序列:
CREATE SEQUENCE student_seq START WITH 1 INCREMENT BY 1;
- 创建触发器:
CREATE OR REPLACE TRIGGER student_trigger BEFORE INSERT ON student FOR EACH ROW BEGIN SELECT student_seq.NEXTVAL INTO :NEW.student_id FROM DUAL; END; /
- 建表语句(此时无需自增关键字):
CREATE TABLE student( student_id int NOT NULL, name VARCHAR(20) NOT NULL, major VARCHAR(20), PRIMARY KEY(student_id) );
内容的提问来源于stack exchange,提问作者Joicy Castilino
相关产品推荐
相关产品推荐

