Derby中的外键约束

时间:2016-02-26 12:13:43

标签: java sql derby

好的,首先我已经看了几个小时谷歌试图让我的外键约束工作,到目前为止没有运气。

我会发布我尝试的变体(基本上是我在谷歌上看过的每一个)。

这是我的创建语句,它完美地运行,现在我尝试在Username列上添加一个外键。

ClassCastException

我尝试在用户名旁边添加这些:

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),"

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

我知道它不起作用,因为当我添加这些时,我从它尝试SELECT时得到以下内容

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

这意味着它没有创建表,我试图从不存在的表中进行SELECT。

请告诉我需要编写什么来帮助我将列定义为另一个表的外键。

我正在尝试将表的用户名设置为表用户的用户名(主键)的外键。

这是Derby和Java。

1 个答案:

答案 0 :(得分:0)

首先需要创建Users表,然后是Questions表。

最后添加了外键约束:

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)
)