我有以下兩個表:插入語句輸出第
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我在兩張桌子上添加關於我的遊戲集合的信息,但我無法讓遊戲ID在兩張桌子上匹配,所以多張筆記引用一個遊戲。
我試過如下:而不是新插入的遊戲的正確的ID
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);
這使信息到所需的列,但「遊戲ID」插入Game_Notes總是默認爲「1」。
所以我試過如下:
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爲「遊戲ID」,於是就有了兩個表之間的比賽,但現在我失去了如何獲得「注意事項」變成同一行。做第二次插入顯然是不可能的,並且在表格的最後一行進行更新似乎不是一個明智的想法。
任何人有什麼我可以在這裏做什麼祕訣?我正在考慮重構插入以適應Notes變量是關鍵,但我一直打它的牆。
你實際上是在尋找這樣的事情? http://stackoverflow.com/questions/1920558/what-is-the-difference-between-scope-identity-identity-identity-and-ide –
我不知道什麼是WebMatrix中。你確定Execute函數返回你選擇的內容嗎?可能是1只是這個函數成功的結果嗎? –
我知道SCOPE_IDENTITY,但我真的覺得這將是矯枉過正,在這種情況下。 @Giorgi,如果是這種情況,我將如何獲得db.execute將gamerId傳遞給變量「id」? – LearningProgrammer