Oracle
 sql >> Base de données >  >> RDS >> Oracle

ORA-00907 lors de la tentative de création d'une contrainte CHECK

Le message d'erreur est

ORA-00907: missing right parenthesis

Il indique presque toujours une erreur de syntaxe plutôt qu'une parenthèse manquante. Dans ce cas, l'analyseur s'oppose à l'ordre des éléments dans votre définition de colonne. Plus précisément, la clause DEFAULT doit précéder la clause CONSTRAINT, qui inclut la déclaration NULL/NOT NULL. Alors essayez

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

Incidemment, vous allez avoir un problème avec cette contrainte. Un type de données CHAR est toujours complété à la longueur déclarée. Ainsi, si vous entrez 'M.' dans la colonne, il passera à 'M. ', dont la valeur amènera la contrainte à lancer une exception. Je vous suggère d'utiliser VARCHAR2(6) à la place.

Les déclarations CHAR sont presque toujours une erreur, juste un bogue qui attend.