一对多关系的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