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 楼答案
首先需要创建用户表,然后创建问题表
将在末尾添加外键约束: