2011-07-25 22 views
5
CREATE TABLE Persons (
    P_Id int NOT NULL, 
    LastName varchar(255) NOT NULL, 
    FirstName varchar(255), 
    PRIMARY KEY (P_Id) 
) 

CREATE TABLE Orders (
    O_Id int NOT NULL PRIMARY KEY, 
    OrderNo int NOT NULL, 
    P_Id int FOREIGN KEY REFERENCES Persons(P_Id) 
) 

Recibo un error al crear órdenes de mesa:ORA-00907: falta paréntesis derecho

ORA-00907: falta paréntesis derecho

+0

abandonan las dos palabras'extraña KEY' a cabo. O utiliza FOREIGN KEY como una cláusula separada (separada por una coma) y proporciona una lista de campos, o usa REFERENCES al final de un campo existente. Ver Oracle SQL Reference. – mihi

+0

¿Existe alguna herramienta en línea para ayudar a aclarar este tipo de errores? Mi código se ejecuta en SQL Developer y se valida en poner Cognos 10 Report Studio, pero cuando trato de generar el SQL, aparece este error. Supongo que en realidad no es causado por parens, pero ¿hay alguna herramienta para ayudar a resolver esto? –

+0

También se ha encontrado esto en IBM Knowledge Center: ORA-00907 también puede estar provocado por consultas que utilizan combinaciones externas izquierdas y cláusulas on: https://www.ibm.com/support/knowledgecenter/SSMR4U_10.1.0/com.ibm. swg.ba.cognos.tg_bitshoot.10.1.1.doc/c_theora-00907errorappearswhenrunningareport.html # TheORA-00907ErrorAppearsWhenRunningaReport –

Respuesta

11

Si está definiendo una línea clave externa con la definición de columna, entonces no debe especificar FOREIGN KEY. Sáltelo de la definición.

Prueba esto:

CREATE TABLE Orders 
( 
    O_Id int NOT NULL PRIMARY KEY, 
    OrderNo int NOT NULL, 
    P_Id int REFERENCES Persons(P_Id) 
) 
+0

Muchas gracias, pero he visto ejemplos, P_Id int REFERENCIAS DE LLAVE EXTRAÑA Personas (P_Id) – Kiran

+0

¿Estás seguro de si? esos fueron para la base de datos Oracle? – Chandu

+2

Después de buscar y enloquecerme por tener que definir constantemente nuevas restricciones nombradas para declarar una clave externa, esto es EXACTAMENTE lo que realmente es el requisito. W3schools.com es incorrecto en su estándar actual de definición de Oracle fk –

Cuestiones relacionadas