我有这种关系:
CurrentVersionID
指向当前活动版本的游戏。
在ArcadeGameVersion
GameID
属性中指向关联的ArcadeGame
记录。
问题是,我无法插入任何记录:
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_ArcadeGame_ArcadeGameVersions". The conflict occurred in database "Scirra", table "dbo.ArcadeGameVersions", column 'ID'.
这是一个结构糟糕的数据结构吗?否则,解决这个问题的最佳解决方案是什么?
答案 0 :(得分:0)
看起来很糟糕。我不明白为什么你需要这个循环引用。 我只使用一个表ArcadeGame与其他字段CurrentVersion和UploadDate。 您可以根据UploadDate查询它,例如,根据您的需要。如果您从该数据库解释您想要的内容,则答案可能更具体。
答案 1 :(得分:0)
如果您需要这种方式,这个结构可以工作。假设ID是标识字段,我相信您需要分5步执行此操作:
SELECT @arcadeGameId = SCOPE_IDENTITY()
您(很可能)希望在交易中执行上述操作。
如果ID不是标识字段,并且您提前知道了这些值,则大多数情况下您可以按照上述步骤操作,但跳过SELECT SCOPE_IDENTITY()步骤。