ora-00907 缺失右括号
刚刚接触Oracle数据库,在使用PL/SQL dev建表的时候,碰到了ora-00907这个错误,在网上找了很多资料,发现别人碰到的那个问题,跟我碰到的这个问题不一样,所以一直没有解决方法,后来,在网上搜索使用oracle建立外键约束的示例,终于发现自己的错误在什么地方了。
系统环境:window 7 旗舰版
oracle数据库:oracle11g
第三方软件:PL/SQL dev
错误的写法:
/* 创建选课表 */
create table learning(
id number(18,0) primary key,
ryid number(18,0) foreign key references students(id), //外键约束
courseid number(18,0) foreign key references course(id), //外键约束
score number(4,1) check(score>=0 and score<=100)
)
正确的写法:
/* 创建选课表 */
create table learning(
id number(18,0) primary key,
ryid number(18,0) references students(id),
courseid number(18,0) references course(id),
score number(4,1) check(score>=0 and score<=100)
)
错误在于:在使用create 建表时, 将创建约束的表级定义和列级定义搞混了 ,出现上述的 两不像的错误,所以就报错了。
此外,在网上找资料的过程中发现 出现ora-00907 缺失右括号的情况有很多种:
比如:
1.在创建主外键约束的时候,外键的类型跟主键的类型不完全一致,也会出现ora-00907 缺失右括号错误
2.关键字写错,也会出现ora-00907 缺失右括号 的错误
3.某些约束 和 字段类型的前后 是有一定的顺序关系的,具体可以查看oracle相关文档
……等等
所以,如果大家在学习oracle的过程中碰到了ora-00907 缺失右括号 这种错误,一定要好好检查自己的建表语句的正确性!
祝你们好运,朋友们!