其他分享
首页 > 其他分享> > 一对多关系的INSERT语句

一对多关系的INSERT语句

作者:互联网

因此,我正在一个项目中对游戏进行分类,但遇到了一个问题.我有一个包含两个表的数据库,其分解如下:

游戏信息

> gameId(PK)是身份(自动递增)
>游戏价格
>名称
>版本

Game_Notes

> noteId(PK)是身份(自动递增)
>笔记
> noteDate
> gameId(FK)

一个游戏可以包含多个音符,因此两个表之间存在一对多的关系,其中“ Game_Notes”中名为“ gameId”的列是FK /引用“ Game_Information”的同名主键.

现在,在Webmatrix中,我编写了一个页面,该页面可让我输入游戏的价格,名称和版本.在同一页面中,我还可以添加有关游戏的注释.在发布时,页面从文本框中获取信息并尝试执行以下操作:

db.Execute("INSERT INTO Game_Information (gamePrice, name, edition) VALUES (@0, @1, @2)", gamePrice, name, edition); 
db.Execute("INSERT INTO Game_Notes(notes, noteDate) VALUES (@0, @1)", notes, noteDate);

现在可以正常工作,并将信息放入正确的表中,但是将“ Game_Notes”中的gameId(FK)留空.

我想要的是分配给“ Game_Information”中gameId(PK)的数字反映在“ Game_Notes”中的gameId(FK)中.

任何人都可以在这方面帮助我,或者指向我可以阅读的文章?谢谢.

-更新-
使问题更清楚.

解决方法:

如果我正确理解您的问题,则您正在尝试完成两件事:

>在Game_Information中获取新插入记录的gameId
>在Game_Notes的以下插入语句中使用该gameId

尽管有无数种方法可以做到这一点,但建议使用“输出”值.就像是:

var id = db.QueryValue("INSERT INTO Game_Information (gamePrice, name, edition) output Inserted.gameId VALUES (@0, @1, @2)", gamePrice, name, edition); 

查看一些帖子,以获取有关此内容的更多信息:Sql Server return the value of identity column after insert statement

然后,在以下语句中使用该ID:

db.Execute("INSERT INTO Game_Notes(gameId, notes, noteDate) VALUES (@0, @1, @2)", id, notes, noteDate);

免责声明:我没有测试过任何一个,只是试图为您指明正确的方向.

标签:webmatrix,sql,c
来源: https://codeday.me/bug/20191028/1950631.html