sql >> Database teknologi >  >> RDS >> Oracle

ORA-00907, når du forsøger at oprette en CHECK-begrænsning

Fejlmeddelelsen er

ORA-00907: missing right parenthesis

Det peger næsten altid på en syntaksfejl i stedet for en manglende parentes. I dette tilfælde gør parseren indsigelse mod rækkefølgen af ​​elementerne i din kolonnedefinition. Specifikt skal DEFAULT-udtrykket komme før CONSTRAINT-udtrykket, som inkluderer NULL/NOT NULL-erklæringen. Så prøv

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

I øvrigt får du et problem med den begrænsning. En CHAR-datatype er altid polstret til den deklarerede længde. Så hvis du indtaster 'M.' ind i kolonnen vil den udfyldes til 'M. ', hvilken værdi vil få begrænsningen til at fremsende en undtagelse. Jeg foreslår, at du bruger VARCHAR2(6) i stedet.

CHAR-erklæringer er næsten altid en fejl, bare en fejl, der venter på at ske.




  1. MySQL + Query for at returnere alle rækker, der har kolonner, der er 'aktive' i en anden tabel

  2. Indsættelse i MySQL fra PHP (jQuery/AJAX)

  3. LATERAL JOIN bruger ikke trigramindeks

  4. Oprettelse af valgfrie afhængigheder