Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

ORA-00907 ao tentar criar uma restrição CHECK


A mensagem de erro é
ORA-00907: missing right parenthesis

Quase sempre aponta para um erro de sintaxe em vez de um colchete ausente. Nesse caso, o analisador está se opondo à ordem dos elementos em sua definição de coluna. Especificamente, a cláusula DEFAULT deve vir antes da cláusula CONSTRAINT, que inclui a declaração NULL/NOT NULL. Então tente
USR_TITRE CHAR(6) DEFAULT 'M.'CHECK (USR_TITRE IN ('M.' , 'Mlle.','Mme.' )) NULL

Aliás, você vai ter um problema com essa restrição. Um tipo de dados CHAR é sempre preenchido com o comprimento declarado. Assim, se você digitar 'M.' na coluna, ele será preenchido para 'M. ', cujo valor fará com que a restrição lance uma exceção. Eu sugiro que você use VARCHAR2(6) em vez disso.

Declarações CHAR são quase sempre um erro, apenas um bug esperando para acontecer.