这个SQL表上的约束有什么问题?

时间:2013-10-24 10:38:21

标签: sql h2 unique-constraint create-table

我正在尝试创建一个新的人行横道/交叉表(synonyms):

  1. 由一对ID组成(两个ID都是另一个表的外键);和
  2. 具有唯一性约束,使得两个ID(作为一对)在表格上必须是唯一的
  3. 这是我的SQL:

    CREATE TABLE synonyms (
        base_word_id INTEGER NOT NULL,
        synonym_id INTEGER NOT NULL,
    
        CONSTRAINT fk_words_based_id FOREIGN KEY (base_word_id) REFERENCES words(word_id)
    );
    

    words表包含(您猜对了),关于这些单词的单词和元数据。 synonyms表是一个多对多表,包含单词及其同义词的关系,这些是其他单词。 synonym_id是单词的ID,它是base_word_id代表的单词的同义词。

    对抗H2 DB我收到以下错误:

    Error: Table "WORDS" not found; SQL statement:
    CREATE TABLE synonyms(
    base_word_id INTEGER NOT NULL,
    synonym_id INTEGER NOT NULL,
    
    CONSTRAINT fk_words_based_id FOREIGN KEY (base_word_id) REFERENCES words(word_id)
    ) [42102-173]
    SQLState:  42S02
    ErrorCode: 42102
    

    在我的数据库中,WORDS不是表,但words是。所以看起来H2可能是上层wordsWORDS

1 个答案:

答案 0 :(得分:0)

看起来你像这样创建了“单词”表:

create table "words"(...)

如果您这样做,那么表名称区分大小写,您必须始终引用它。为避免这种情况,请创建不带双引号的表:

create table words(...)