【发布时间】:2023-04-08 11:28:02
【问题描述】:
我正在尝试为名为 Words_in_group 的表创建外键,该表包含用户创建的 froup 中的所有单词。
我正在尝试将单词引用到一个名为:Words 的表,它的 P 键是“Word”。
也许这与使用复合键的“Words”表有关?
这是创建外键的脚本。
alter table "WORDS_IN_GROUP" add constraint
"WORDS_IN_GROUP_FK1" foreign key ("WORD") references "WORDS" ("WORD")
/
这里是表格 SQL:
CREATE TABLE "WORDS_IN_GROUP" ( "GROUP_CODE" NUMBER(9,0) NOT NULL ENABLE,
"WORD" VARCHAR2(45) NOT NULL ENABLE,
CONSTRAINT "WORDS_IN_GROUP_PK" PRIMARY KEY ("GROUP_CODE") ENABLE ) ;ALTER TABLE "WORDS_IN_GROUP" ADD CONSTRAINT "WORDS_IN_GROUP_FK" FOREIGN KEY ("GROUP_CODE")
REFERENCES "GROUP_OF_WORDS" ("GROUP_CODE") ON DELETE CASCADE ENABLE;CREATE OR REPLACE TRIGGER "BI_WORDS_IN_GROUP" before insert on "WORDS_IN_GROUP" for each row begin if :NEW."GROUP_CODE" is null then
select "GROUP_OF_WORDS_SEQ".nextval into :NEW."GROUP_CODE" from dual; end if; end; /ALTER TRIGGER "BI_WORDS_IN_GROUP" ENABLE;
***///////////
CREATE TABLE "WORDS" ( "WORD" VARCHAR2(45) NOT NULL ENABLE,
"FILE_SN" NUMBER(9,0) NOT NULL ENABLE,
"FILE_NAME" VARCHAR2(16) NOT NULL ENABLE,
"POSITION_NUM" NUMBER(5,0) NOT NULL ENABLE,
"SECTION_NUM" NUMBER(5,0) NOT NULL ENABLE,
"WORD_SECTION_POSITION" NUMBER(4,0) NOT NULL ENABLE,
CONSTRAINT "WORDS_PK" PRIMARY KEY ("WORD", "FILE_SN") ENABLE ) ;
这是我得到的错误:
ORA-02270: 此列列表没有匹配的唯一键或主键
【问题讨论】:
-
这是因为 Words 表中的主键由 2 列组成:word+file_sn,而您的外键是单列:word
-
欢迎来到 Stack Overflow。请始终将源代码、错误消息和其他文本信息作为内联纯文本而不是外部图片提供。文本是可搜索的、可重复使用的并且通常更易于阅读。我已经为你编辑了问题。
标签: sql oracle foreign-keys ddl