【发布时间】:2016-02-26 12:13:43
【问题描述】:
好吧,首先我已经看了几个小时试图使我的外键约束工作的谷歌,但到目前为止没有运气。
我将发布我尝试过的变体(基本上是我在 google 上看到的所有变体)。
这是我的创建语句,效果很好,现在我尝试在用户名列上添加外键。
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 的。
【问题讨论】:
-
看来您实际上并不确定您运行的是什么 SQL 以及它做了什么。为什么不从一个新的数据库重新开始,并使用像 Derby 的“ij”工具或像 SquirrelSQL 这样的工具来了解 DDL 在创建表时应该如何查找。以下是有关如何指定外键引用的文档:db.apache.org/derby/docs/10.12/ref/rrefsqlj13590.html
-
我正在为 derby 使用嵌入式驱动程序数据库,我只能将它用于我的项目。
-
我知道你必须遵守家庭作业的规则,但我很难理解为什么你的老师会认为你学习更多关于 SQL 和 Derby 是一件坏事.或许你可以问你的老师,如果你在db.apache.org/derby/docs/10.12/getstart 上进行 Derby 教程是否可以/跨度>