sql >> データベース >  >> RDS >> Oracle

CHECK制約を作成しようとしたときのORA-00907

    エラーメッセージは

    です。
    ORA-00907: missing right parenthesis
    

    ほとんどの場合、角かっこがないのではなく、構文エラーを示しています。この場合、パーサーは列定義内の要素の順序に反対しています。具体的には、DEFAULT句は、NULL /NOTNULL宣言を含むCONSTRAINT句の前に配置する必要があります。だから試してみてください

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

    ちなみに、その制約で問題が発生します。 CHARデータ型は、常に宣言された長さに埋め込まれます。したがって、「M」と入力すると、列に'Mまでパディングします。 '、この値により、制約は例外をスローします。代わりにVARCHAR2(6)を使用することをお勧めします。

    CHAR宣言はほとんどの場合間違いであり、バグが発生するのを待っています。




    1. MYSQL左結合NULL値を選択するにはどうすればよいですか?

    2. INSERT...SELECTを使用して戻る代わりに

    3. リスト<製品>をデータベースに挿入する方法

    4. LIMITを使用したSQLクエリの結果をクエリごとに異なるようにするにはどうすればよいですか?