带输出子句的插入语句
Insert statement with Output Clause
我有以下两个table:
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 页面,这将允许我在两个 table 中添加有关我的游戏 collection 的信息,但我无法将 gameId 获取到在两个 table 之间匹配,因此,多个注释引用一个游戏。
我尝试了以下方法:
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);
将信息放入所需的列,但 "gameId" 插入 Game_Notes 始终默认为“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",因此两个 table 之间存在匹配项,但现在我不知道如何将 "notes" 变量放入其中同一行。进行第二次插入显然不可行,并且在 table 的最后一行进行更新似乎不是一个明智的主意。
有人对我在这里可以做什么有什么建议吗?我在考虑重组 Insert 以适应 Notes 变量是关键,但我一直在碰壁。
如我所说Database.Execute
方法 returns 受 SQL statement
影响的记录数。因此,您插入一行并得到 1
作为结果。
The Execute method is used to perform non-query commands on a
database, such as the SQL Drop, Create, Delete, Update, and Insert
commands. https://msdn.microsoft.com/en-us/library/webmatrix.data.database.execute(v=vs.111).aspx
您需要 Database.QueryValue
方法来执行 SQL
查询,结果 returns 单个标量值。
var id = db.QueryValue(...
我有以下两个table:
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 页面,这将允许我在两个 table 中添加有关我的游戏 collection 的信息,但我无法将 gameId 获取到在两个 table 之间匹配,因此,多个注释引用一个游戏。
我尝试了以下方法:
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);
将信息放入所需的列,但 "gameId" 插入 Game_Notes 始终默认为“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",因此两个 table 之间存在匹配项,但现在我不知道如何将 "notes" 变量放入其中同一行。进行第二次插入显然不可行,并且在 table 的最后一行进行更新似乎不是一个明智的主意。
有人对我在这里可以做什么有什么建议吗?我在考虑重组 Insert 以适应 Notes 变量是关键,但我一直在碰壁。
如我所说Database.Execute
方法 returns 受 SQL statement
影响的记录数。因此,您插入一行并得到 1
作为结果。
The Execute method is used to perform non-query commands on a database, such as the SQL Drop, Create, Delete, Update, and Insert commands. https://msdn.microsoft.com/en-us/library/webmatrix.data.database.execute(v=vs.111).aspx
您需要 Database.QueryValue
方法来执行 SQL
查询,结果 returns 单个标量值。
var id = db.QueryValue(...