Oracle
 sql >> база данни >  >> RDS >> Oracle

ORA-00907 при опит за създаване на ограничение CHECK

Съобщението за грешка е

ORA-00907: missing right parenthesis

Почти винаги сочи към синтактична грешка, а не към липсваща скоба. В този случай анализаторът възразява срещу реда на елементите във вашата дефиниция на колона. По-конкретно, клаузата DEFAULT трябва да е преди клаузата CONSTRAINT, която включва декларацията NULL/NOT NULL. Така че опитайте

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

Между другото, ще имате проблем с това ограничение. Типът данни CHAR винаги се допълва до декларираната дължина. Следователно, ако въведете 'M.' в колоната, тя ще премине към „M. ', която стойност ще накара ограничението да хвърли изключение. Предлагам ви да използвате вместо това VARCHAR2(6).

CHAR декларациите почти винаги са грешка, просто бъг, който чака да се случи.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Обяснение на оператора Oracle MINUS

  2. проблем с хибернация на oracle10g

  3. Oracle - Най-добрият оператор SELECT за получаване на разликата в минути между две колони DateTime?

  4. java.sql.SQLRecoverableException - свържете се отново от jdbc

  5. Oracle - Как да генерирам скрипт от sql разработчик