我确信我一定是在做一些非常愚蠢的事情,因为向现有表添加新的外键并不难。但是,我仍然卡住了。这就是我正在做的事情。
首先,我创建了一个新列TPM_USER
来存储用户所在的团队:
ALTER TABLE TPM_USER ADD (
"TEAMID" NUMBER NULL
)
这可以正常工作,并且我可以查询TPM_USER
表以查看已添加的新列。接下来,我希望 TEAMID 引用已经存在的TPM_DEVELOPMENTTEAMS
表中的一行。所以我这样做:
ALTER TABLE TPM_USER
ADD CONSTRAINT TPM_USER_FK1
FOREIGN KEY(TEAMID)
REFERENCES TPM_DEVELOPMENTTEAMS(TEAMID)
这给了我错误:
ORA-02270: 此列列表没有匹配的唯一键或主键
我检查了两TEAMID
列的数据类型相同(NUMBER),并且 TEAMID 当然是DEVELOPMENTTEAMS
表的主键。实际上,这是 的架构DEVELOPMENTTEAMS
:
CREATE TABLE TPMDBO.TPM_DEVELOPMENTTEAMS (
TEAMID NUMBER NULL,
NAME VARCHAR2(100) NOT NULL,
ISACTIVE CHAR(1) NULL,
SORTORDER NUMBER NULL,
SHORTNAME VARCHAR2(100) NULL,
GROUPID NUMBER NOT NULL,
CONSTRAINT TPM_DEVELOPMENTTEAMS_PK PRIMARY KEY(TEAMID)
NOT DEFERRABLE
DISABLE NOVALIDATE
)
我什至尝试了 Aqua Data Studio 中的 GUI 界面来添加新的约束,所以我确信我没有拼错任何东西。我究竟做错了什么?