有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Derby中的java外键约束

好的,首先,我已经在谷歌上看了好几个小时,试图让我的外键约束生效,但到目前为止运气不好

我将发布我尝试过的变体(基本上是我在谷歌上看到的所有变体)

这是我的create语句,它工作得非常好,现在我尝试在Username列上添加一个外键

public final String CREATE_QUESTIONS_TABLE = "CREATE TABLE Questions(QuestionID INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,"
        + "SubmittedTime TIMESTAMP NOT NULL,"
        + "Title VARCHAR(50) NOT NULL,"
        + "Text VARCHAR(300) NOT NULL,"
        + "Username VARCHAR(10),"
        + "Rating INTEGER DEFAULT 0 NOT NULL)";

我已尝试在用户名旁边添加以下内容:

+ "Username VARCHAR(10) CONSTRAINT username_fk FOREIGN KEY (Username) REFERENCES Users(Username),"

+ "Username VARCHAR(10) CONSTRAINT username_fk REFERENCES Users(Username),"

还有一些我现在记不起来了(我打开了很多标签)

我知道它不起作用,因为当我添加这些时,当我尝试从中选择时,会得到以下结果

Schema 'USERNAME' does not exist

这意味着它没有创建表,我试图从一个不存在的表中进行选择

请告诉我,为了将一列定义为另一个表的外键,我需要写些什么

我试图将表的用户名设置为表用户的用户名(主键)的外键

这就是Derby和Java


共 (1) 个答案

  1. # 1 楼答案

    首先需要创建用户表,然后创建问题表

    将在末尾添加外键约束:

    CREATE TABLE Questions
    (
        QuestionID INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
        SubmittedTime TIMESTAMP NOT NULL,
        Title VARCHAR(50) NOT NULL,
        Text VARCHAR(300) NOT NULL,
        Username VARCHAR(10),
        Rating INTEGER DEFAULT 0 NOT NULL,
        CONSTRAINT username_fk FOREIGN KEY (Username) REFERENCES Users(Username)
    )