SQL : ORA-02270: 此列列表没有匹配的唯一键或主键
Posted
技术标签:
【中文标题】SQL : ORA-02270: 此列列表没有匹配的唯一键或主键【英文标题】:SQL : ORA-02270: no matching unique or primary key for this column-list 【发布时间】:2021-11-16 09:14:24 【问题描述】:CREATE TABLE Store
(
Store_Name VARCHAR2(20) PRIMARY KEY NOT NULL,
Year_Opened DATE,
Manager VARCHAR2(20) NOT NULL
);
CREATE TABLE Store1
(
Store VARCHAR2(20) NOT NULL
REFERENCES Store(Store_Name),
Department VARCHAR2(10) NOT NULL,
PRIMARY KEY ( Store, Department )
);
CREATE TABLE Inventory
(
Inventory_No VARCHAR2(8) PRIMARY KEY NOT NULL,
Store VARCHAR2(20) NOT NULL
REFERENCES Store1(Store),
Department VARCHAR2(10) NOT NULL
REFERENCES Store1(Department)
);
只是想知道为什么我一遍又一遍地收到同样的错误。我引用了正确的表,而我引用的列是主键,所以我不确定为什么会出现错误。任何帮助将不胜感激谢谢。
完全错误:
ORA-02270: 此列列表没有匹配的唯一键或主键 02270. 00000 - “此列列表没有匹配的唯一键或主键”
*原因:CREATE/ALTER TABLE 语句中的 REFERENCES 子句给出了一个列列表,在被引用的表中没有匹配的唯一键或主键约束。
*操作:使用 ALL_CONS_COLUMNS 目录视图查找正确的列名
【问题讨论】:
【参考方案1】:我引用了正确的表,而我引用的列是主键
不是真的。
从表inventory
,您引用Store1 (Store)
,但store1
表的主键定义为PRIMARY KEY ( Store, Department )
。
你不能引用主键的部分。
如果您按如下方式修改外键约束,它将起作用:
SQL> CREATE TABLE Store(
2 Store_Name VARCHAR2(20) PRIMARY KEY NOT NULL,
3 Year_Opened DATE,
4 Manager VARCHAR2(20) NOT NULL
5 );
Table created.
SQL> CREATE TABLE Store1(
2 Store VARCHAR2(20) NOT NULL
3 REFERENCES Store(Store_Name),
4 Department VARCHAR2(10) NOT NULL,
5 PRIMARY KEY ( Store, Department )
6 );
Table created.
SQL> CREATE TABLE Inventory(
2 Inventory_No VARCHAR2(8) PRIMARY KEY NOT NULL,
3 Store VARCHAR2(20) NOT NULL,
4 Department VARCHAR2(10) NOT NULL,
5 --
6 constraint fk_inv_sto foreign key (store, department)
7 references store1 (store, department)
8 );
Table created.
SQL>
【讨论】:
以上是关于SQL : ORA-02270: 此列列表没有匹配的唯一键或主键的主要内容,如果未能解决你的问题,请参考以下文章
Oracle (ORA-02270) : 此列列表错误没有匹配的唯一键或主键
添加外键约束时遇到问题(错误 ORA-02270:此列列表没有匹配的唯一键或主键)
ORA-02270: 此列列表的唯一关键字或主键不匹配一些思路