【问题标题】:Can not able to add foreign key in my table using H2 database无法使用 H2 数据库在我的表中添加外键
【发布时间】:2020-07-09 10:22:54
【问题描述】:

我一直在尝试将外键添加到我的表 studentJobInformation。 我有两个表 applicationForm 有一个列 versityId。我想把它作为这个 studentJobInformation 表的外键。但不幸的是,我无法做到这一点。第一张图显示了 applicationForm 表列的信息,第二张图显示了 studentJobInformation 在此处输入图像描述 然后我写这个 SQL 来添加外键。

ALTER TABLE studentJobInformation ADD FOREIGN KEY (versityId) REFERENCES applicationForm((versityId)

但我的 H2 数据库显示此错误。

SQL 语句中的语法错误“ALTER TABLE STUDENTJOBINFORMATION ADD FOREIGN KEY (VERSITYID) REFERENCES APPLICATIONFORM(([]VERSITYID)”;预期为“标识符”;SQL 语句: ALTER TABLE studentJobInformation ADD FOREIGN KEY (versityId) REFERENCES applicationForm((versityId) [42001-196] 42001/42001*

【问题讨论】:

    标签: sql database foreign-keys h2


    【解决方案1】:

    你在命令末尾versityId之前有两个左括号,你需要删除一个。

    【讨论】:

    • @Evgenjij 感谢您的辛勤工作。这就是我在深夜工作时发生的事情。我已经经历了至少 20 次,但找不到这个错误。但不幸的是,它也没有工作。我刚刚从最后删除了 (versityId) 并且它有效。我的 SQl 现在是这样的 """ ALTER TABLE studentJobInformation ADD FOREIGN KEY (versityId) REFERENCES applicationForm; """"。我不知道为什么会这样。也许 H2 数据库知道 applicationForm 表的主键是什么。
    • 您需要使用ALTER TABLE STUDENTJOBINFORMATION ADD FOREIGN KEY (VERSITYID) REFERENCES APPLICATIONFORM(VERSITYID)。您可以在REFERENCES APPLICATIONFORM 之后省略(VERSITYID),但在这种情况下将使用主键列(APPLICATIONID),我想这不是您的意图。但是,您的架构看起来很可疑,通常您不应该在引用约束中引用辅助键,但这是另一个问题。
    • 是的,你是对的。你最后的评论让我大开眼界。我从一开始就错了。我需要更改我的架构并且必须重组我的表。
    猜你喜欢
    • 1970-01-01
    • 2019-01-14
    • 2014-04-02
    • 1970-01-01
    • 2020-12-07
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多