I have the code below and I’m running it step by step:
x
CREATE TABLE registration (
constraint pkks primary key (cod_class, number_rgm),
cod_class NUMBER(8),
number_rgm NUMBER(8),
dt_registration DATE
);
CREATE TABLE class (
constraint fk_class foreign key (cod_class) references registration (cod_class),
cod_class NUMBER(8),
number_schoolyear NUMBER(4),
number_series NUMBER(2),
sg_class VARCHAR2(2),
cod_school NUMBER(6),
cod_grade NUMBER(2),
cod_period NUMBER(2)
);
CREATE TABLE alumn (
constraint fk_rgm foreign key (number_rgm) references registration (number_rgm),
number_rgm NUMBER(8),
name_alumn VARCHAR2(40),
name_father VARCHAR2(40),
name_mother VARCHAR2(40),
birth DATE,
id_sex CHAR(1)
);
But when I create the second and third tables I get the following error:
ORA-02270: no matching unique or primary key for this column-list
How do I solve this error and create the tables in this logic? I am saving all primary keys
in the registration
table and the other tables will only reference it.
Advertisement
Answer
You’ve got your foreign keys backwards. The cod_class
and number_rgm
columns in registration
should be foreign keys referencing the class
and alumn
tables respectively.
CREATE TABLE class (
constraint pk_class primary key (cod_class),
cod_class NUMBER(8),
number_schoolyear NUMBER(4),
number_series NUMBER(2),
sg_class VARCHAR2(2),
cod_school NUMBER(6),
cod_grade NUMBER(2),
cod_period NUMBER(2)
);
CREATE TABLE alumn (
constraint pk_rgm primary key (number_rgm),
number_rgm NUMBER(8),
name_alumn VARCHAR2(40),
name_father VARCHAR2(40),
name_mother VARCHAR2(40),
birth DATE,
id_sex CHAR(1)
);
CREATE TABLE registration (
constraint pkks primary key (cod_class, number_rgm),
constraint fk_class foreign key (cod_class) references class(cod_class),
constraint fk_rgm foreign key (number_rgm) references alum(number_rgm),
cod_class NUMBER(8),
number_rgm NUMBER(8),
dt_registration DATE
);