ORA-00907:缺失右括号错误求助,CREATE TABLE语句故障排查
解决ORA-00907: missing right parenthesis错误的排查结果
我帮你仔细梳理了你的CREATE TABLE语句,找到了引发ORA-00907错误的三处问题,具体如下:
- CHECK约束逻辑缺失关键字:在
tipo字段的CHECK约束中,tipo = 'B-'后面漏掉了OR关键字,导致逻辑表达式语法断裂,数据库无法正确解析括号匹配。 - 字段长度定义错误:
id_sal字段的长度写成了1O(字母O),而不是数字10,这属于语法错误,干扰了语句的正常解析。 - 约束名称重复:最后一个外键约束的名称
san_tipo_pruebas_pk和前面的主键约束名重复了,Oracle不允许同一表内存在同名约束,这也会导致语句执行失败。
修正后的完整CREATE TABLE语句
CREATE TABLE sangre ( id_pruebas VARCHAR2(10) CONSTRAINT san_id_pruebas_pk PRIMARY KEY, tipo VARCHAR2(5) NOT NULL CONSTRAINT san_tipo_pruebas_check CHECK (tipo = 'O-' OR tipo = 'O+' OR tipo = 'A-' OR tipo = 'A+' OR tipo = 'B-' OR tipo = 'B+' OR tipo = 'AB-' OR tipo = 'AB+'), fecha DATE NOT NULL, id_sal VARCHAR2(10) NOT NULL, id_paciente NUMBER(8) NOT NULL CONSTRAINT san_id_paciente_ck CHECK (id_paciente >= 0), id_enfermero VARCHAR2(10) NOT NULL, CONSTRAINT san_id_enfermero_fk FOREIGN KEY (id_enfermero) REFERENCES enfermero (id_enfermero), CONSTRAINT san_id_paciente_fk FOREIGN KEY (id_paciente) REFERENCES paciente(id_paciente), CONSTRAINT san_id_sal_fk FOREIGN KEY (id_sal) REFERENCES laboratorio(id_sal) );
内容的提问来源于stack exchange,提问作者Octupux
相关产品推荐
相关产品推荐

