繁体   English   中英

使用循环外键将记录插入数据库

[英]Inserting a record into a database with looping foreign keys

我有这种关系:

在此处输入图片说明

其中CurrentVersionID指向游戏的当前活动版本。

ArcadeGameVersionGameID属性指向关联的ArcadeGame记录。

问题是,我不能插入任何一条记录:

The INSERT statement conflicted with the FOREIGN KEY constraint "FK_ArcadeGame_ArcadeGameVersions". The conflict occurred in database "Scirra", table "dbo.ArcadeGameVersions", column 'ID'.

这是格式错误的数据结构吗? 否则,克服此问题的最佳解决方案是什么?

似乎形成不良。 我看不到您为什么需要此循环参考。 我只会使用一个带有其他字段CurrentVersion和UploadDate的表ArcadeGame。 您可以根据自己的需要,例如基于UploadDate进行查询。 如果您解释要从该数据库获取的内容,答案可能更加具体。

如果您需要这种结构,则可以使用此结构。.假设ID是身份字段,我相信您将需要分5个步骤进行操作:

  1. 插入一个ArcadeGame记录,其中的CurrentVersionId为空值
  2. 使用以下语句确定刚添加的记录的ID值: SELECT @arcadeGameId = SCOPE_IDENTITY()
  3. 插入一个ArcadeGameVersion记录,将GameID设置为上一步中确定的值
  4. 确定刚刚添加的记录的ID值(再次使用SCOPE_IDENTITY())
  5. 更新ArcadeGame记录(其中的ID与步骤2中确定的ID匹配),并将CurrentVersionId设置为上一步中确定的值。

您(很可能)希望在交易中执行上述操作。

如果这些ID不是标识字段,并且您提前知道了这些值,则通常可以执行与上述相同的步骤,但是可以跳过SELECT SCOPE_IDENTITY()步骤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM