好的,首先我已经看了几个小时谷歌试图让我的外键约束工作,到目前为止没有运气。
我会发布我尝试的变体(基本上是我在谷歌上看过的每一个)。
这是我的创建语句,它完美地运行,现在我尝试在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。
答案 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)
)