【问题标题】:Game Database dual foreign key [duplicate]游戏数据库双外键[重复]
【发布时间】:2018-10-09 15:07:46
【问题描述】:

创建一个表,并且不能创建外键,因为外键需要引用唯一值 - 据我所知。但是在 phpmyadmin 上,您可以在索引中插入一行,然后将其作为外键引用。

我目前正在使用 SQL Server Management Studio,无法引用外键。

我的桌子是

create table gameEvents(
event id int,
eventtext varchar(500),
eventLocation varchar(150),
eventFeedback varchar(300),
choiceOne varchar(100),
choiceTwo varchar(100),
eventDifficulty int,
event Result int
)

Create table gameChoice(
eventDifficulty int,
eventResult int,
ChoiceOneR int,
ChoiceOneV int,
ChoiceTwoR int,
ChoiceTwoV int
)

我正在尝试将 eventDifficulty 和 eventResult (gameChoice) 引用到具有相同列名的 gameEvents。

使用的代码

Alter table gameEvents ADD CONSTRAINT FK_difficulty FOREIGN KEY (eventDifficulty) REFERENCES gameChoice(eventDifficulty);

(代码是手动输入的,以防出现语法错误)

收到错误 - 引用表 'gameChoice' 中没有与外键 'FK_difficulty' 中的引用列列表匹配的主键或候选键

我理解错误。但是,除了使用 phpmyadmin 之外,我没有看到任何其他方式来制作这些外键链接……有没有办法在 SQL Server Managment Studio 上制作这些外键

【问题讨论】:

  • 先添加主键
  • 我不确定您在问什么...gameChoice.eventDifficulty 需要是主键或具有唯一索引。

标签: sql sql-server foreign-keys


【解决方案1】:

您可以在没有主键约束的情况下创建对另一个表的外键引用。但是,为了保持参照完整性,您需要在 GameChoice 表的 EventDifficulty 列上创建唯一键约束。

您可以为您的 alter 语句尝试以下脚本。

Alter table gameChoice ADD CONSTRAINT UK_difficulty UNIQUE (eventDifficulty);
Alter table gameEvents ADD CONSTRAINT FK_difficulty FOREIGN KEY (eventDifficulty) REFERENCES gameChoice(eventDifficulty);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多