I was trying to create a table on SQL Developer, and I had the error called “Missing left parenthesis”, which I think it can be almost anything.
The code is this, and the 3 tables take the same error:
x
CREATE TABLE cliente (dni VARCHAR2(10), CONSTRAINT dni_pk PRIMARY KEY,
nombre_cli VARCHAR2 (50), CONSTRAINT nombre_cli_nn NOT NULL,
apellidos VARCHAR2 (50),
direccion VARCHAR2 (50),
f_nac DATE);
CREATE TABLE producto (cod_prod NUMBER (10), CONSTRAINT cod_prod_pk PRIMARY KEY,
nom_prod VARCHAR2 (50), CONSTRAINT nom_prod_nn NOT NULL,
precio VARCHAR2 (50));
CREATE TABLE compra (dni_cli NUMBER (10),
cod_prod NUMBER (10), CONSTRAINT cod_prod_pk PRIMARY KEY,
cantidad NUMBER (10),
CONSTRAINT pelicula_codigo_prod_fg FOREIGN KEY(cod_prod) REFERENCES producto(cod_prod),
CONSTRAINT pelicula_codigo_cli_fg FOREIGN KEY(cod_cli) REFERENCES cliente(dni_cli));
I have tried a lot of things and none has worked. It is probably something silly, so I would be grateful for any help.
Advertisement
Answer
Update: The issues were that the primary key constraint expects you to specify the columnname. I.e. `PRIMARY KEY (column_name). You also used the wrong column names in the Foreign Key constraint declaration. Lastly, there was a difference in column types between the key columns in the 2 initial tables and the referencing table, and you reused the same name for the cod_prod_pk constraint.
CREATE TABLE cliente (
dni VARCHAR2(10) NOT NULL,
nombre_cli VARCHAR2(50) NOT NULL,
apellidos VARCHAR2(50),
direccion VARCHAR2(50),
f_nac DATE,
CONSTRAINT dni_pk PRIMARY KEY (dni)
);
CREATE TABLE producto (cod_prod NUMBER (10) NOT NULL,
nom_prod VARCHAR2 (50),
precio VARCHAR2 (50)
, CONSTRAINT cod_prod_pk PRIMARY KEY (cod_prod));
CREATE TABLE compra ( dni_cli VARCHAR2(50),
cod_prod NUMBER(10) NOT NULL,
cantidad NUMBER (10),
CONSTRAINT cod_prod_pk2 PRIMARY KEY(cod_prod),
CONSTRAINT pelicula_codigo_prod_fg FOREIGN KEY (cod_prod) REFERENCES producto(cod_prod),
CONSTRAINT pelicula_codigo_cli_fg FOREIGN KEY (dni_cli) REFERENCES cliente(dni));