Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ORA-00907 beim Versuch, eine CHECK-Einschränkung zu erstellen

Die Fehlermeldung lautet

ORA-00907: missing right parenthesis

Es weist fast immer eher auf einen Syntaxfehler als auf eine fehlende Klammer hin. In diesem Fall widerspricht der Parser der Reihenfolge der Elemente in Ihrer Spaltendefinition. Insbesondere muss die DEFAULT-Klausel vor der CONSTRAINT-Klausel stehen, die die NULL/NOT NULL-Deklaration enthält. Versuchen Sie es also

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

Übrigens werden Sie mit dieser Einschränkung ein Problem haben. Ein CHAR-Datentyp wird immer auf die deklarierte Länge aufgefüllt. Wenn Sie also 'M.' in die Spalte wird es zu 'M' aufgefüllt. ', dessen Wert dazu führt, dass die Einschränkung eine Ausnahme auslöst. Ich schlage vor, dass Sie stattdessen VARCHAR2(6) verwenden.

CHAR-Deklarationen sind fast immer ein Fehler, nur ein Fehler, der darauf wartet, passiert zu werden.