插入带有输出子句的语句
本文关键字:语句 子句 输出 插入 | 更新日期: 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(...