创建Sales_Order表触发ORA-00906缺失左括号错误如何解决
ORA-00906报错原因与修复方案
错误原因
本次报错由三处语法问题共同导致:
- 外键约束语法不完整:定义外键时必须明确指定当前表中作为外键的列,原有代码中
foreign key references Cust_Master(clientno)缺少关联列声明,不符合Oracle语法规范。 - 字段约束顺序错误:
delytype字段的DEFAULT约束必须放在CHECK约束之前,Oracle不支持DEFAULT写在CHECK之后的语法结构。 - 括号不匹配:
orderstatus字段的CHECK约束缺少闭合右括号,导致整个建表语句的括号结构断裂。
修复后完整SQL代码
create table Sales_Order ( orderno varchar2(6) primary key check(orderno like 'O%'), clientno varchar(6), foreign key (clientno) references Cust_Master(clientno), orderdate date not null, delytype char(1) default 'F' check(delytype in ('P','F')), billyn char(1), payment_mode varchar2(15) check(payment_mode in ('COD', 'Net Banking', 'Credit Card', 'Debit Card')), delydate date, orderstatus varchar2(10) check(orderstatus in ('In Process', 'Fulfilled', 'BackOrder', 'Cancelled')) );
注意:执行前需确认关联的
Cust_Master表已存在,且Cust_Master.clientno字段的类型、长度与当前表clientno字段完全匹配。
内容的提问来源于stack exchange,提问作者Siddarth Sanjay
相关产品推荐
相关产品推荐

