sql >> Base de Datos >  >> RDS >> Oracle

ORA-00907 al intentar crear una restricción CHECK

El mensaje de error es

ORA-00907: missing right parenthesis

Casi siempre apunta a un error de sintaxis en lugar de un paréntesis faltante. En este caso, el analizador se opone al orden de los elementos en la definición de su columna. Específicamente, la cláusula DEFAULT debe ir antes de la cláusula CONSTRAINT, que incluye la declaración NULL/NOT NULL. Así que intenta

USR_TITRE CHAR(6) DEFAULT 'M.'CHECK (USR_TITRE IN ('M.' , 'Mlle.','Mme.' )) NULL

Por cierto, vas a tener un problema con esa restricción. Un tipo de datos CHAR siempre se rellena hasta la longitud declarada. Por lo tanto, si ingresa 'M.' en la columna se rellenará hasta 'M. ', cuyo valor hará que la restricción lance una excepción. Le sugiero que use VARCHAR2 (6) en su lugar.

Las declaraciones CHAR casi siempre son un error, solo un error que está a punto de ocurrir.