回答

收藏

违反-未找到父键错误

技术问答 技术问答 261 人阅读 | 0 人回复 | 2023-09-12

我犯以下错误:
" f' F1 X4 r* ~0 B6 o+ K9 x8 FINSERT INTO GroupMembers VALUES ('Goldfrat','Simon Palm')*ERROR at line 1:ORA-02291: integrity constraint (SHAHA1.IAM_IS_GROUP_FK) violated - parent key not found该GroupMembers表中的约束是:( h% R1 M, a2 l- V1 S
CONSTRAINT  iam_is_group_fk FOREIGN KEY(is_group) REFERENCES Members(group_name)成员表如下:0 v1 S9 o/ m  ~2 Z6 i& x0 {) J- h! R
CREATE TABLE Members (  group_name  VARCHAR2(40), CONSTRAINT  g_id_pk PRIMARY KEY(group_name), CONSTRAINT  m_group_name_fk FOREIGN KEY(group_name) REFERENCES Artist(artistic_name));在创建表之前,所有表都可以很好地创建GroupMembers。有人有想法吗?我抓挠了一段时间。
% s( F3 q; d- V0 n, W! ]                                                                7 Y" U" n; b& A" n; B3 R6 h
    解决方案:                                                                ) {: m. ^& G1 s" `% Y) [
                                                                问题是
4 T# |/ C, ?1 _* |. g! [CONSTRAINT iam_is_group_fk FOREIGN KEY(is_group) REFERENCESMembers(group_name); references the table Members on the group_name field.
5 f* N  `& h! @: \4 r# Y这意味着表上的字段is_group在GroupMembers表Members和group_name字段必须具有相同的值。+ k' |6 D: w" h) |! X( J
我认为这是个坏主意。首先,你应该在手表上GroupMembers有一个主键字段。您不应该将组成员的名称存储在表中GroupMembers中间,应该对应ID存储在表Member中。' ]% O8 {4 n! v# P9 g
另外,表Members它应该看起来像这样:; g) y6 M, P5 a, e! o
                CREATE TABLE Members  member_id   NUMBER PRIMARY KEY    member_name  VARCHAR二、四十、  CONSTRAINT  g_id_pk PRIMARY KEY(member_id),   CONSTRAINT  m_group_name_fk FOREIGN KEY(group_name) REFERENCES Artist(artistic_name));然后在桌子上GroupMembers,我想你应该把一些成员联系到他们的小组并返回,所以你应该执行以下操作:1 q; {/ v5 ^" T! b
                CREATE TABLE GroupMembers (       member_id   NUMBER,       group_id    NUMBER    )   CONSTRAINT  iam_is_member_fk FOREIGN KEY(member_id) REFERENCES Members(member_id);    CONSTRAINT  iam_is_member_fk FOREIGN KEY(group_id) REFERENCES Groups(group_id);假设你有一个Groups包含所有组详细信息的表primary key存储为number和名称group_id。
4 q# S/ n: C# k& b# ~: c* J永远记住,每个表都必须有一个primary key。将此键设置为数字是一种很好的方法。
6 N, z4 ~) a8 y; D所以,通过拥有member_id" M4 P! L5 a- d/ }) ~5 x3 |
Members,group_id在Groups,你可以创造很多关系GroupMembers。另外,在这张桌子上放一个唯一的索引,这样你就不会重复(同一个成员和同一个成员多次id关联)。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则