sql >> Databasteknik >  >> RDS >> Oracle

ORA-00907 när du försöker skapa en CHECK-begränsning

Felmeddelandet är

ORA-00907: missing right parenthesis

Det pekar nästan alltid på ett syntaxfel snarare än en saknad parentes. I det här fallet protesterar parsern mot ordningen på elementen i din kolumndefinition. Specifikt måste DEFAULT-satsen komma före CONSTRAINT-satsen, som inkluderar NULL/NOT NULL-deklarationen. Så försök

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

Förresten, du kommer att få ett problem med den begränsningen. En CHAR-datatyp utfylls alltid till den deklarerade längden. Så om du anger 'M.' in i kolumnen kommer det att fyllas ut till 'M. ', vilket värde kommer att få begränsningen att slunga ett undantag. Jag föreslår att du använder VARCHAR2(6) istället.

CHAR-deklarationer är nästan alltid ett misstag, bara en bugg som väntar på att hända.




  1. Dela strängkolumnvärden

  2. Mysql-fråga med count Resurs-id #11

  3. Rails 3 Fråga:får fel när du använder "select" med "order"

  4. Hämta data från sql-databasen och visa i tabeller - Visa viss data enligt kryssrutor som är markerade