I have this two tables:
CREATE TABLE TBL1 (
DATERIF DATE NOT NULL,
DOMAINCODE VARCHAR2(20) NOT NULL,
DATACODE VARCHAR2(10) NOT NULL,
DSDATO VARCHAR2(50),
CDDWH CHAR(1),
CONSTRAINT PK_TBL1 PRIMARY KEY (DATERIF, DOMAINCODE, DATACODE)
)
;
and
CREATE TABLE TBL2 (
DATERIF DATE NOT NULL,
PRODUCTCODE CHAR(5 BYTE) NOT NULL,
PRODCATEG VARCHAR2(20) NOT NULL,
PRODUCTDESCR VARCHAR2(100),
PRODUCTTYPE VARCHAR2(10),
CODSECTION VARCHAR2(10),
CDDWH CHAR(1 BYTE),
DTUPDATED DATE,
CONSTRAINT PK_TBL2 PRIMARY KEY (DATERIF, PRODUCTCODE, PRODCATEG),
CONSTRAINT FK_TBL2_TBL1_PRODUCTTYPE FOREIGN KEY (PRODUCTTYPE) REFERENCES TBL1(DATACODE),
CONSTRAINT FK_TBL2_TBL1_CODSECTION FOREIGN KEY (CODSECTION) REFERENCES TBL1(DATACODE)
)
;
on the Table TBL2 creation, I get ORA-02270 : no matching unique or primary key for this column-list error Sincerely, I can't solve the problem. Could someone help me? Thank you
TT
Note:Clarification required from OP
The problem you are facing is because of the restriction on foreign key
aka referential integrity
,
As the official doc says, here
Foreign Key Constraints
A foreign key constraint (also called a referential integrity constraint) designates a column as the foreign key and establishes a relationship between that foreign key and a specified primary or unique key, called the referenced key. A composite foreign key designates a combination of columns as the foreign key.
Having assumption that both the primary key
we see in your code has different purpose and you want to have value in PRODUCTTYPE
and CODESECTION
column to be checked against value in DATACODE
as to fulfill some integrity, you need to create an unique
constraint on the DATACODE
column and then the foreign key
reference to it,
CREATE TABLE TBL1 (
DATERIF DATE NOT NULL,
DOMAINCODE VARCHAR2(20) NOT NULL,
DATACODE VARCHAR2(10) NOT NULL,
DSDATO VARCHAR2(50),
CDDWH CHAR(1),
CONSTRAINT PK_TBL1 PRIMARY KEY (DATERIF, DOMAINCODE, DATACODE),
CONSTRAINT UK_DATACODE_TBL1 UNIQUE(DATACODE)
);
CREATE TABLE TBL2 (
DATERIF DATE NOT NULL,
PRODUCTCODE CHAR(5 BYTE) NOT NULL,
PRODCATEG VARCHAR2(20) NOT NULL,
PRODUCTDESCR VARCHAR2(100),
PRODUCTTYPE VARCHAR2(10),
CODSECTION VARCHAR2(10),
CDDWH CHAR(1 BYTE),
DTUPDATED DATE,
CONSTRAINT PK_TBL2 PRIMARY KEY (DATERIF, PRODUCTCODE, PRODCATEG),
CONSTRAINT FK_TBL2_TBL1_PRODUCTTYPE FOREIGN KEY (PRODUCTTYPE) REFERENCES TBL1(DATACODE),
CONSTRAINT FK_TBL2_TBL1_CODSECTION FOREIGN KEY (CODSECTION) REFERENCES TBL1(DATACODE)
);