游戏数据库双外键

时间:2018-10-09 15:07:46

标签: sql sql-server foreign-keys

创建一个表,并且不能创建外键,因为据我所知,外键需要引用唯一值。但是,在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上使这些外键

1 个答案:

答案 0 :(得分: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);