2016-03-28 22 views
1

私はこのSQLエラーORA-00907右カッコが欠落は、テーブル

CREATE TABLE ARTIST (

    ArtistID   Int    NOT NULL IDENTITY(1,1), 
    LastName   Char(25)  NOT NULL, 
    FirstName   Char(25)  NOT NULL, 
    Nationality   Char(30)  NULL, 
    DateOfBirth   Numeric(4)  NULL, 
    DateDeceased  Numeric(4)  NULL, 
    CONSTRAINT ArtistPK   PRIMARY KEY(ArtistID), 
    CONSTRAINT ArtistAK1   UNIQUE(LastName, FirstName),  
    CONSTRAINT BirthValuesCheck CHECK (DateOfBirth < DateDeceased), 
    CONSTRAINT ValidBirthYear  CHECK 
      (DateOfBirth LIKE '[1-2][0-9][0-9][0-9]'), 
    CONSTRAINT ValidDeathYear  CHECK 
      (DateDeceased LIKE '[1-2][0-9][0-9][0-9]') 
); 

のような表を作成していると私はこのエラーを取得を作成します。00000 - "右括弧がありません" 何故でしょうか?

+0

これは驚くべき解答ではありませんが、制約を削除して、どれが失敗しているかを確認するために1つずつ追加してみましたか? –

+0

なぜあなたはファーストとラストネームにUNIQUE制約がありますか?同じ名前の複数のアーティストを持つことはできませんか?また、生年月日に「DATE」データ型を使用しないでください。 – MT0

+1

'char(25)'と 'char(30)'データ型はほとんど間違いです。名前と国籍は可変長の文字列です。代わりに 'varchar2'を使用してください。あなたの 'DateOfBirth'と' DateDeceased'は、ちょうど年を格納するのではなく、確かに 'date'でしょう。数値フィールドにチェック制約を設定する場合は、数値比較を行います(つまり、YearOfBirth BETWEEN 1000,29999)。 –

答えて

3

のOracle 12cのsyntax for identity columnsは次のとおりです。

GENERATED [ ALWAYS | BY DEFAULT [ ON NULL ] ] 
AS IDENTITY [ (identity_options) ] 

は、Oracle 11を使用しているか、以下のあなたがIDENTITYの列を持つことができないとシーケンスを使用する必要がありますが、あなたが望む、あなたが12Cを使用していると仮定した場合:

CREATE TABLE ARTIST (
    ArtistID   Int    NOT NULL GENERATED ALWAYS AS IDENTITY, 
    LastName   Char(25)  NOT NULL, 
    FirstName   Char(25)  NOT NULL, 
    Nationality   Char(30)  NULL, 
    DateOfBirth   Numeric(4)  NULL, 
    DateDeceased  Numeric(4)  NULL, 
    CONSTRAINT ArtistPK   PRIMARY KEY(ArtistID), 
    CONSTRAINT ArtistAK1   UNIQUE(LastName, FirstName),  
    CONSTRAINT BirthValuesCheck CHECK (DateOfBirth < DateDeceased), 
    CONSTRAINT ValidBirthYear  CHECK 
      (DateOfBirth LIKE '[1-2][0-9][0-9][0-9]'), 
    CONSTRAINT ValidDeathYear  CHECK 
      (DateDeceased LIKE '[1-2][0-9][0-9][0-9]') 
); 
+0

ありがとうございます。今私はこれが問題だと確信しています。私はそれを修正します。 –

+0

これはGENERATEDについて不平を言っています! –

+0

今私はOracle 11を使用していますが、それでも同じ問題 –