ORA-00907: missing right parenthesis SQL Developer

579 Views Asked by At

I need to know why I get a parenthesis error in this part of the code.

CREATE TABLE CIUDAD(
COD_CIUDAD NUMBER(3) CONSTRAINT CIUDAD_PK PRIMARY KEY (COD_CIUDAD),
NOMBRE VARCHAR2(20) CONSTRAINT NOTNULL_NOMBRE NOT NULL,
NOMBRE_REGION VARCHAR(20) CONSTRAINT NOTNULL_NOMBRE_REGION NOT NULL
);
2

There are 2 best solutions below

4
On BEST ANSWER

When you are using an in-line constraint, the PRIMARY KEY automatically refers to the column being declared. Hence, the (COD_CIUDAD) is not accepted.

Try this:

CREATE TABLE CIUDAD (
    COD_CIUDAD NUMBER(3) CONSTRAINT CIUDAD_PK PRIMARY KEY,
    NOMBRE VARCHAR2(20) CONSTRAINT NOTNULL_NOMBRE NOT NULL,
    NOMBRE_REGION VARCHAR2(20) CONSTRAINT NOTNULL_NOMBRE_REGION NOT NULL
);

I changed the type of NOMBRE_REGION to VARCHAR2().

1
On

When using PRIMARY KEY (COD_CIUDAD) syntax, then constraint must be defined separately from the column or remove (COD_CIUDAD)

You should use the following query:

CREATE TABLE CIUDAD(
COD_CIUDAD NUMBER(3) ,
NOMBRE VARCHAR2(20)  CONSTRAINT NOTNULL_NOMBRE NOT NULL,
NOMBRE_REGION VARCHAR(20)  CONSTRAINT NOTNULL_NOMBRE_REGION NOT NULL,
CONSTRAINT CIUDAD_PK PRIMARY KEY (COD_CIUDAD)
);

Also you can ignore naming NOT NULL constraint:

CREATE TABLE CIUDAD(
COD_CIUDAD NUMBER(3) ,
NOMBRE VARCHAR2(20)  NOT NULL,
NOMBRE_REGION VARCHAR(20)  NOT NULL,
CONSTRAINT CIUDAD_PK PRIMARY KEY (COD_CIUDAD)
);

References: