簡體   English   中英

數據庫SQL錯誤:ORA-02270:此列列表沒有匹配的唯一鍵或主鍵

[英]Database SQL Error: ORA-02270: no matching unique or primary key for this column-list

我正在創建一個簡單的數據庫,並且不斷遇到此錯誤ORA-02270:此列列表沒有匹配的唯一鍵或主鍵。 我已經嘗試解決這個問題超過一天,但我不明白自己在做什么錯。 我看過有關此錯誤的其他帖子,但不了解我在做什么錯。

毫無問題地創建的表是TEAMS,PLAYERS和GAMES表。 當我嘗試創建TEAM_GAME_STATS或PLAYER_GAME_STATS表時,出現此錯誤。 我注意到,如果我從這兩個表中都刪除了外鍵約束,那么創建它們就沒有問題。 但我認為這可能會導致數據問題? 如果有人可以查看我的代碼並告知我可能做錯了什么或向正確的方向指出,我將不勝感激。 我將表簡化為僅主鍵/外鍵,因此沒有過多的代碼。

CREATE TABLE teams (
  team    VARCHAR2(50),
  CONSTRAINT teams_pk PRIMARY KEY (team)
);

CREATE TABLE players (
  player_id          NUMBER,
  team               VARCHAR2(50),
  CONSTRAINT players_pk PRIMARY KEY (player_id),
  CONSTRAINT players_fk_team FOREIGN KEY (team)
    REFERENCES teams (team)
);

CREATE TABLE games (
  game_number   NUMBER,
  player_id     NUMBER,
  team          VARCHAR2(50),
  CONSTRAINT games_pk PRIMARY KEY (game_number, player_id, team),
  CONSTRAINT games_fk_player_id FOREIGN KEY (player_id)
    REFERENCES players (player_id),
  CONSTRAINT games_fk_team FOREIGN KEY (team)
    REFERENCES teams (team)
);

CREATE TABLE team_game_stats (
  game_number               NUMBER,
  team                      VARCHAR2(50),
  CONSTRAINT team_game_stats_pk PRIMARY KEY (game_number, team),
  CONSTRAINT team_game_stats_fk_game_number FOREIGN KEY (game_number)
    REFERENCES games (game_number),
  CONSTRAINT team_game_stats_fk_team FOREIGN KEY (team)
    REFERENCES games (team),
);

CREATE TABLE player_game_stats (
  game_number               NUMBER,
  player_id                 NUMBER,
  CONSTRAINT player_game_stats_pk PRIMARY KEY (game_number, player_id),
  CONSTRAINT player_game_stats_fk_game_number FOREIGN KEY (game_number)
    REFERENCES games (game_number),
  CONSTRAINT player_game_stats_fk_player_id FOREIGN KEY (player_id)
    REFERENCES games (player_id),
);

CREATE INDEX players_team_idx
  ON players (team);

CREATE INDEX games_player_id_idx
  ON games (player_id);
CREATE INDEX games_team_idx
  ON games (team);

CREATE INDEX team_game_stats_game_number_idx
  ON team_game_stats (game_number);
CREATE INDEX team_game_stats_team_idx
  ON team_game_stats (team);

CREATE INDEX player_game_stats_game_number_idx
  ON player_game_stats (game_number);
CREATE INDEX player_game_stats_player_id_idx
  ON player_game_stats (player_id);

外鍵是對另一個表的主鍵的引用。

Oracle SQL:收到“沒有匹配的唯一鍵或主鍵”錯誤,並且不知道為什么

更改

CONSTRAINT games_pk PRIMARY KEY (game_number, player_id, team)

CONSTRAINT games_pk PRIMARY KEY (game_number, team)

也改變

CONSTRAINT team_game_stats_fk_game_number FOREIGN KEY (game_number)
REFERENCES games (game_number),
CONSTRAINT team_game_stats_fk_team FOREIGN KEY (team)
REFERENCES games (team),

成為

CONSTRAINT team_game_stats_game_fk FOREIGN KEY (game_number, team)
REFERENCES games (game_number, team)

並執行類似於player_game_stats的操作。

您可能需要弄亂每個表的鍵。 重要的是表中的外鍵應包含與其引用的表的主鍵相同的列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM