【问题标题】:Oracle (ORA-02270) : no matching unique or primary key for that column listOracle (ORA-02270):该列列表没有匹配的唯一键或主键
【发布时间】:2021-11-28 22:20:11
【问题描述】:

我有两张桌子:

CREATE TABLE Trasy_srodki_transportu(
  ID_Trasy Integer NOT NULL,
  ID_pojazdu Integer NOT NULL
) 
/
CREATE TABLE Trasy(
  ID_Trasy Integer NOT NULL,
  Linia Varchar2(4 ) NOT NULL,
  Data_rozpoczecia_kursowania Date NOT NULL,
  Data_zakonczenia_kursowania Date,
  ID_Pracownika Integer NOT NULL
)

现在我想将外键添加到 Trasy_srodki_transportu 引用 Trasy 表:

ALTER TABLE Trasy_srodki_transportu ADD CONSTRAINT Trasa_jest_wykorzystywana FOREIGN KEY (ID_Trasy) REFERENCES Trasy (ID_Trasy)
/

这会引发 Oracle (ORA-02270) : no matching unique key or primary key for this column-list 错误。有什么建议可以解决这个问题吗?Data modeler view

【问题讨论】:

标签: sql oracle


【解决方案1】:

外键需要引用相关表上的键,但在您的示例中并非如此。通过在其中添加PRIMARY KEY 约束来更改第二个表的定义,如下所示:

CREATE TABLE Trasy (
  ID_Trasy Integer PRIMARY KEY NOT NULL,
  Linia Varchar2(4 ) NOT NULL,
  Data_rozpoczecia_kursowania Date NOT NULL,
  Data_zakonczenia_kursowania Date,
  ID_Pracownika Integer NOT NULL
)

或者,您可以在其上创建一个唯一约束,该约束也可以用作键。例如:

CREATE TABLE Trasy (
  ID_Trasy Integer NOT NULL,
  Linia Varchar2(4 ) NOT NULL,
  Data_rozpoczecia_kursowania Date NOT NULL,
  Data_zakonczenia_kursowania Date,
  ID_Pracownika Integer NOT NULL,
  CONSTRAINT uq_idtrasy UNIQUE (ID_Trasy)
)

【讨论】:

    猜你喜欢
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2014-05-15
    • 2022-12-14
    • 1970-01-01
    相关资源
    最近更新 更多