插入带有输出子句的语句

本文关键字:语句 子句 输出 插入 | 更新日期: 2023-09-27 17:56:50

我有以下两个表:

Game_Information

gameId(PK) Is Identity(auto-increments)
gamePrice
name
edition
date

Game_Notes

noteId(PK) Is Identity(auto-increments)
notes
noteDate
gameId(FK)

我目前正在尝试在 WebMatrix 中编写一个 cshtml 页面,该页面将允许我在两个表中添加有关我的游戏集合的信息,但我无法让 gameId 在两个表之间匹配,因此,多个注释引用一个游戏。

我尝试了以下方法:

var id = db.Execute("INSERT INTO Game_Information (gamePrice, name, edition, addedDate) output Inserted.gameId VALUES (@0, @1, @2, @4)", gamePrice, name, edition, date); 
db.Execute("INSERT INTO Game_Notes(gameId, notes, noteDate) VALUES (@0, @1, @2)", id, notes, noteDate);

这会将信息放入所需的列中,但插入Game_Notes中的"gameId"始终默认为"1",而不是新插入的游戏的正确 ID。

所以我尝试了以下方法:

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

这会将正确的 id 插入到"gameId"中,因此两个表之间存在匹配,但现在我不知道如何将"notes"变量放入同一行中。执行第二次插入显然已经结束,并且在表的最后一行进行更新似乎不是一个明智的主意。

有人对我能在这里做什么有任何提示吗?我认为重组插入以适应 Notes 变量是关键,但我一直在上面碰壁。

插入带有输出子句的语句

正如我所说Database.Execute该方法返回受SQL statement影响的记录计数。因此,您插入了一行并因此获得了1

Execute 方法用于对 数据库,例如 SQL 删除、创建、删除、更新和插入 命令。https://msdn.microsoft.com/en-us/library/webmatrix.data.database.execute(v=vs.111).aspx

您需要Database.QueryValue执行SQL查询的方法,该查询返回单个标量值作为结果。

var id = db.QueryValue(...