【问题标题】:What's wrong with the constraint on this SQL table create?这个 SQL 表创建的约束有什么问题?
【发布时间】:2013-10-24 10:38:21
【问题描述】:

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

  1. 由一对 ID 组成(都是不同表的外键);和
  2. 具有唯一性约束,使得两个 ID(作为一对)在表中必须是唯一的

这是我的 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 是与base_word_id 表示的单词同义的单词的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 可能吗?

【问题讨论】:

    标签: sql h2 unique-constraint create-table


    【解决方案1】:

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

    create table "words"(...)
    

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

    create table words(...)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      • 2016-06-28
      • 2010-09-19
      相关资源
      最近更新 更多