有人可以帮我解决这个错误。也许你的眼睛更清晰。我查了很多代码,但仍然无法找到它。我想要做的是为KODAS_UŽ
表创建UŽSAKYTOS_DALYS
外键。
CREATE TABLE UŽSAKYMAI
(KODAS_UŽ NUMERIC(10,0) NOT NULL,
ID_USS NUMERIC(10,0) NOT NULL,
DATA_UŽ DATE NOT NULL);
ALTER TABLE UŽSAKYMAI ADD CONSTRAINT UŽSAKYMAI_PK PRIMARY KEY (KODAS_UŽ,ID_USS);
CREATE TABLE UŽSAKYTOS_DALYS
(NR NUMERIC(3,0) NOT NULL,
KODAS_DLS VARCHAR(20) NOT NULL,
KODAS_UKS NUMERIC(10,0) NOT NULL,
ID_USS NUMERIC(10,0) NOT NULL);
ALTER TABLE UŽSAKYTOS_DALYS ADD CONSTRAINT UŽ_PK PRIMARY KEY (NR, KODAS_DLS, KODAS_UKS);
ALTER TABLE UŽSAKYTOS_DALYS ADD CONSTRAINT UŽSAKYTOS_DALYS_DALYS_FK FOREIGN KEY (KODAS_DLS)
REFERENCES DALYS(KODAS_D) ON DELETE CASCADE;
它不能在这里工作
ALTER TABLE UŽSAKYTOS_DALYS ADD CONSTRAINT UŽSAKYTOS_DALYS_UŽSAKYMAI_FK FOREIGN KEY (KODAS_UKS)
REFERENCES UŽSAKYMAI(KODAS_UŽ) ON DELETE CASCADE;
错误代码:
SQL Error: ORA-02270: no matching unique or primary key for this column-list 02270. 00000 - "no matching unique or primary key for this column-list"
*Cause: A REFERENCES clause in a CREATE/ALTER TABLE statement gives a column-list for which there is no matching unique or primary key constraint in the referenced table.
*Action: Find the correct column names using the ALL_CONS_COLUMNS catalog view
答案 0 :(得分:4)
尝试:
ALTER TABLE UŽSAKYTOS_DALYS ADD CONSTRAINT UŽSAKYTOS_DALYS_UŽSAKYMAI_FK FOREIGN KEY (KODAS_UKS, ID_USS)
REFERENCES UŽSAKYMAI(KODAS_UŽ, ID_USS) ON DELETE CASCADE;
这是我最好的猜测,我不太熟悉Oracle或一般的外键。我只偶尔制作它们(读:基本上从不)。
答案 1 :(得分:3)
您的问题是,引用表的主键有两个列,但您正在尝试创建一个包含一个列的外键。< / p>
这是表格def:
CREATE TABLE UŽSAKYMAI
(KODAS_UŽ NUMERIC(10,0) NOT NULL,
ID_USS NUMERIC(10,0) NOT NULL,
DATA_UŽ DATE NOT NULL);
ALTER TABLE UŽSAKYMAI ADD CONSTRAINT UŽSAKYMAI_PK
PRIMARY KEY (KODAS_UŽ,ID_USS);
以下是您尝试引用它的方法:
ALTER TABLE UŽSAKYTOS_DALYS ADD CONSTRAINT UŽSAKYTOS_DALYS_UŽSAKYMAI_FK
FOREIGN KEY (KODAS_UKS) REFERENCES UŽSAKYMAI(KODAS_UŽ)
ON DELETE CASCADE;
尝试将ID_USS
列添加到您的外键def:
ALTER TABLE UŽSAKYTOS_DALYS ADD CONSTRAINT UŽSAKYTOS_DALYS_UŽSAKYMAI_FK
FOREIGN KEY (KODAS_UKS, ID_USS) REFERENCES UŽSAKYMAI(KODAS_UŽ, ID_USS)
ON DELETE CASCADE;
或者简单地说,因为您正在引用主键,所以可以省略引用的列:
ALTER TABLE UŽSAKYTOS_DALYS ADD CONSTRAINT UŽSAKYTOS_DALYS_UŽSAKYMAI_FK
FOREIGN KEY (KODAS_UKS, ID_USS) REFERENCES UŽSAKYMAI
ON DELETE CASCADE;