sql >> Databáze >  >> RDS >> Oracle

ORA-00907 při pokusu o vytvoření omezení CHECK

Chybová zpráva je

ORA-00907: missing right parenthesis

Téměř vždy ukazuje na chybu syntaxe spíše než na chybějící závorku. V tomto případě má analyzátor námitky proti pořadí prvků ve vaší definici sloupce. Konkrétně klauzule DEFAULT musí předcházet klauzuli CONSTRAINT, která obsahuje deklaraci NULL/NOT NULL. Tak zkuste

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

Mimochodem, budete mít problém s tímto omezením. Datový typ CHAR je vždy doplněn na deklarovanou délku. Pokud tedy zadáte 'M.' do sloupce se přesune na „M. ', která hodnota způsobí, že omezení vyvolá výjimku. Navrhuji, abyste místo toho použili VARCHAR2(6).

Deklarace CHAR jsou téměř vždy chybou, jen chybou, která čeká, až se stane.




  1. MySQL server zmizel - přesně za 60 sekund

  2. MySQL LOAD DATA LOCAL INFILE není povoleno přes ODBC

  3. Je nutná transakce pro jeden aktualizační dotaz?

  4. Jak spravovat měrné jednotky ve webové aplikaci PHP?