2014-12-07 146 views
2

我有以下SQL我在我的本地HSQLDB 2.3.2數據庫運行:HSQLDB錯誤:意外的標記:外國

CREATE TABLE IF NOT EXISTS countries (
    country_id    INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1) NOT NULL PRIMARY KEY, 
    country_version   INTEGER NOT NULL, 
    country_name   NVARCHAR(100) NOT NULL, 
    country_label   NVARCHAR(100) NOT NULL, 
    country_description  NVARCHAR(500) NOT NULL 
    country_code   NVARCHAR(10) NOT NULL, 

    CONSTRAINT uc_countries UNIQUE (country_id, country_version, country_label, country_description, country_code) 
); 

CREATE TABLE IF NOT EXISTS states (
    state_id    INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1) NOT NULL PRIMARY KEY, 
    state_version   INTEGER NOT NULL 
    state_name    NVARCHAR(100) NOT NULL, 
    state_label    NVARCHAR(100) NOT NULL, 
    state_description  NVARCHAR(500) NOT NULL, 
    country_id    INT NOT NULL, 

    FOREIGN KEY (country_id) REFERENCES countries(country_id), 
    CONSTRAINT uc_states UNIQUE (state_id, state_version, state_label, state_description, country_id) 
); 

當我運行此我得到:

Error: unexpected token: FOREIGN 
SQLState: 42581 
ErrorCode: -5581 

是什麼去這裏,我能做些什麼來解決它?

+1

爲什麼沒有解釋的downvote?如果這是一個騙局,請給我看看這個問題!否則,這是一個[SSCCE](http://sscce.org/),顯示努力/研究,幷包含診斷/排除故障所需的一切。 – IAmYourFaja 2014-12-07 10:43:48

+1

我沒有downvote你,但我認爲這是一個很好的問題,所以我upvoted它。 – april4181 2014-12-10 16:15:10

+2

如果分別執行每個語句,是否還會出現此錯誤?這可能是由於它符合的方式。 – april4181 2014-12-10 16:19:44

回答

1

INT NOT NULLINTEGER NOT NULL之間的差異?因爲您已經通過兩者定義了country_id字段。

另外,如果你在頂端插入SET REFERENTIAL_INTEGRITY FALSE;,你還收到此錯誤?

+1

Ughhhhh,我不能相信多久我在那個一直盯着,並已俯瞰它。 'INT'無效,它必須是'INTEGER'。賞金和接受的答案獎勵!謝謝! – IAmYourFaja 2014-12-10 20:02:26