sql >> Database >  >> RDS >> Oracle

ORA-00907 bij het maken van een CHECK-beperking

De foutmelding is

ORA-00907: missing right parenthesis

Het wijst bijna altijd op een syntaxisfout in plaats van op een ontbrekend haakje. In dit geval maakt de parser bezwaar tegen de volgorde van de elementen in uw kolomdefinitie. De clausule DEFAULT moet met name vóór de clausule CONSTRAINT komen, die de declaratie NULL/NOT NULL bevat. Dus probeer

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

Overigens krijg je een probleem met die beperking. Een CHAR-gegevenstype wordt altijd opgevuld tot de opgegeven lengte. Dus als u 'M.' invoert in de kolom zal het uitlopen naar 'M. ', welke waarde ervoor zorgt dat de beperking een uitzondering maakt. Ik raad u aan in plaats daarvan VARCHAR2(6) te gebruiken.

CHAR-declaraties zijn bijna altijd een vergissing, gewoon een bug die wacht om te gebeuren.




  1. Kolom bijwerken naar de standaardwaarde met SQLAlchemy

  2. Wat is er met (nolock) in SQL Server?

  3. Solr Indexing Mijn SQL Tijdstempel of Datum Tijd veld

  4. plsql-blok om het dynamische SQL-queryresultaat te krijgen