这个 SQL 表创建的约束有啥问题?
Posted
技术标签:
【中文标题】这个 SQL 表创建的约束有啥问题?【英文标题】:What's wrong with the constraint on this SQL table create?这个 SQL 表创建的约束有什么问题? 【发布时间】:2013-10-24 10:38:21 【问题描述】:我正在尝试创建一个新的人行横道/交叉路口表 (synonyms
):
-
由一对 ID 组成(都是不同表的外键);和
具有唯一性约束,使得两个 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 是大写的 words
到 WORDS
可能吗?
【问题讨论】:
【参考方案1】:看起来您像这样创建了“单词”表:
create table "words"(...)
如果你这样做,那么表名是区分大小写的,你必须总是引用它。为避免这种情况,请创建不带双引号的表:
create table words(...)
【讨论】:
以上是关于这个 SQL 表创建的约束有啥问题?的主要内容,如果未能解决你的问题,请参考以下文章