我正在尝试创建一个表格,我收到错误invalid datatype
。我试图更改变量,但错误仍然存在。有人能帮助我吗?
代码:
CREATE TABLE DETALLEFACTURA (
NUMERO_FACTURA_DETALLE NUMBER(15),
NUMERO_DETALLE_FACTURA VARCHAR(20),
CODIGO_ARTICULO VARCHAR(20),
CANTIDAD NUMBER(6),
PORCENTAJE_GANANCIA NUMBER(10),
PRECIO NUMBER(8),
CONSTRAINT DETALLE_PK PRIMARY KEY(NUMERO_FACTURA_DETALLE,NUMERO_DETALLE_FACTURA),
CONSTRAINT (NUMERO_FACTURA_DETALLE_FK) FOREIGN KEY(NUMERO_FACTURA_DETALLE) REFERENCES FACTURA(NUMERO_FACTURA) on delete cascade,
CONSTRAINT (NUMERO_DETALLE_FACTURA_FK) FOREIGN KEY(NUMERO_DETALLE_FACTURA) REFERENCES ARTICULO(CODIGO_ARTICULO) on delete cascade
);
错误
ORA-00902: invalid datatype
提前感谢大家!
答案 0 :(得分:1)
错误来自约束名称周围的括号;这会得到同样的错误:
create table FACTURA(NUMERO_FACTURA NUMBER(15) primary key);
create table ARTICULO(CODIGO_ARTICULO VARCHAR(20) primary key);
CREATE TABLE DETALLEFACTURA(
NUMERO_FACTURA_DETALLE NUMBER(15),
NUMERO_DETALLE_FACTURA VARCHAR(20),
CODIGO_ARTICULO VARCHAR(20),
CANTIDAD NUMBER(6),
PORCENTAJE_GANANCIA NUMBER(10),
PRECIO NUMBER(8),
CONSTRAINT DETALLE_PK PRIMARY KEY(NUMERO_FACTURA_DETALLE,NUMERO_DETALLE_FACTURA),
CONSTRAINT (NUMERO_FACTURA_DETALLE_FK) FOREIGN KEY(NUMERO_FACTURA_DETALLE) REFERENCES FACTURA(NUMERO_FACTURA) on delete cascade,
CONSTRAINT (NUMERO_DETALLE_FACTURA_FK) FOREIGN KEY(NUMERO_DETALLE_FACTURA) REFERENCES ARTICULO(CODIGO_ARTICULO) on delete cascade
);
ORA-00902:数据类型无效
这不是:
CREATE TABLE DETALLEFACTURA(
NUMERO_FACTURA_DETALLE NUMBER(15),
NUMERO_DETALLE_FACTURA VARCHAR(20),
CODIGO_ARTICULO VARCHAR(20),
CANTIDAD NUMBER(6),
PORCENTAJE_GANANCIA NUMBER(10),
PRECIO NUMBER(8),
CONSTRAINT DETALLE_PK PRIMARY KEY(NUMERO_FACTURA_DETALLE,NUMERO_DETALLE_FACTURA),
CONSTRAINT NUMERO_FACTURA_DETALLE_FK FOREIGN KEY(NUMERO_FACTURA_DETALLE) REFERENCES FACTURA(NUMERO_FACTURA) on delete cascade,
CONSTRAINT NUMERO_DETALLE_FACTURA_FK FOREIGN KEY(NUMERO_DETALLE_FACTURA) REFERENCES ARTICULO(CODIGO_ARTICULO) on delete cascade
);
Table DETALLEFACTURA created.
唯一的区别是删除了最后两个约束的括号。
顺便提一下,Oracle recommends using varchar2
instead of varchar
;它不会导致错误但会引起混淆,并且在可能的情况下遵循他们的建议会更好。他们一直说它会被重新定义,只要我记得,但谁知道,它可能会在某一天发生......