所以我有一个表,它用一个昵称作为外键,用一个id作为主键:
CREATE TABLE Character(
Nickname TEXT,
CONSTRAINT person_pk PRIMARY KEY(Nickname)
);
CREATE TABLE POSTING(
PostingID BIGINT UNIQUE,
Nickname TEXT,
CONSTRAINT posting_fk FOREIGN KEY(Nickname) REFERENCES Person(Nickname),
CONSTRAINT postings_pk PRIMARY KEY(PostingID, Nickname)
);
到目前为止,一切都很好。然而,每当我试图从发布中获取主键时,它告诉我:“没有唯一的约束来匹配引用表“信息”的给定键。
CREATE TABLE INFORMATION(
InformationID BIGINT,
PostingID BIGINT,
CONSTRAINT informations_fk FOREIGN KEY(PostingID) REFERENCES POSTING(PostingID),
CONSTRAINT informations_pk PRIMARY KEY(InformationID, PostingID)
);
CREATE TABLE DATA(
InformationID BIGINT,
Link TEXT NOT NULL,
CONSTRAINT data_fk FOREIGN KEY(InformationID) REFERENCES INFORMATION(InformationID),
CONSTRAINT datas_pk PRIMARY KEY(InformationID)
);
但是,如果我将表中的信息信息ID更改为唯一,错误就会消失。这是正确的做事方式吗?
CREATE TABLE INFORMATION(
InformationID BIGINT UNIQUE,
PostingID BIGINT,
CONSTRAINT informations_fk FOREIGN KEY(PostingID) REFERENCES POSTING(PostingID),
CONSTRAINT informations_pk PRIMARY KEY(InformationID, PostingID)
);
提前感谢大家!
信息
的主键只能是信息ID
,或者数据
必须包含postingid
,并且信息
的外键在两列上都有定义。
在不了解您的数据的情况下很难说,但我怀疑前一种解决方案是正确的。
如何使用hibernate注释实现下表? 当前代码为:(为简洁起见,已删除) 使用者 社交网络 SocialProfile公司 显然我的代码现在不能正常工作。有人能解释一下吗?
问题内容: 我必须使用hibernate模式,并且不太确定如何解决此问题,我有2个具有1..n关系的表,如下所示: 我该如何使用Hibernate进行管理??? 我不知道如何管理第二张表的主键… 问题答案: 在Hibernate参考文档中有一个与您的案例完全相似的示例。在此示例之前,您将找到解释。这是与您的问题匹配的示例(用户是表A,客户是表B): 注意:如果您拥有这两个表的代理标识符,则要简单得
我有两张桌子: 用户(用户名、密码) 配置文件(profileId,gender,dateofbirding,...) 目前我正在使用这种方法:每个Profile记录都有一个名为“userid”的字段作为外键,它链接到用户表。当用户注册时,他的配置文件记录将自动创建。 我对我朋友的建议感到困惑:将“userid”字段作为外部和主键,并删除“profileid”字段。哪种方法更好?
本文向大家介绍主键与唯一键,包括了主键与唯一键的使用技巧和注意事项,需要的朋友参考一下 首要的关键 主键是一列,用于唯一地标识表的每个元组。 它用于向表添加完整性约束。一个表中只能使用一个主键。在主键的情况下,重复和NULL(空)值无效。主键也可以用作其他表的外键。 让我们举个例子 我们有一个表名employee,用于存储公司员工的数据。下表显示了该表的内容。 Emp_id 名称 号码 位置 薪水
问题内容: 如何使用复合主键作为外键?看来我的尝试无效。 问题答案: 该行: 是错的。您不能那样使用,这只是父表中PK约束的名称。要将复合主键用作外键,您必须向子表中添加相同数量(组成PK)的相同数据类型的列,然后在定义中使用这些列的组合:
如何将复合主键用作外键?看来我的尝试没有成功。