Oracle

ORA-02270 - Oracle 中的 FK 可以在 VARCHAR2 列上定義嗎?

  • July 15, 2022

SQL 不僅僅是文字:

CREATE TABLE "currency" ("id" NUMBER(10) NOT NULL,
"currency" VARCHAR2(50) NOT NULL,
"name" VARCHAR2(1020) DEFAULT NULL NULL,
PRIMARY KEY("id"));
CREATE TABLE "user" ("id" NUMBER(10) NOT NULL,
"name" VARCHAR2(1020) DEFAULT NULL NULL,
"currency" VARCHAR2(50) DEFAULT NULL NULL,
PRIMARY KEY("id"));
CREATE UNIQUE INDEX IDX_6956883FFF467AE9 ON "currency" ("currency");
ALTER TABLE "user" ADD CONSTRAINT FK_8D93D6496956883F6956883F695
FOREIGN KEY ("currency") REFERENCES "currency" ("currency");
ORA-02270: 此列列表沒有匹配的唯一鍵或主鍵

在 dbfiddle 上重現

列類型相同,並添加了唯一索引。

為什麼無法添加 FK?

唯一索引不包括唯一約束。

添加約束並重試:

alter table "currency" add unique("currency") using index IDX_6956883FFF467AE9;

引用自:https://dba.stackexchange.com/questions/314472