私はプログラミングの世界では初心者なので、私の無知を許してください。
挿入したばかりの行の主キー値を取得したい。主キーの値は自動的に生成されます。その主キーの値を外部キーとして別のテーブルに挿入したいと考えています。
これは、最初のテーブルにデータを挿入するコードです
Core.DB.DoQuery("insert into survey(id, title, detail, employerid, userid) values(@id, @title, @detail, @eid, @uid);",
Core.DB.SIP("title", surveyTitle.Text),
Core.DB.SIP("detail", surveyDetail.Text),
Core.DB.SIP("eid", LocalHelper.UserEmployerID()),
Core.DB.SIP("uid", LocalHelper.UserID()),
Core.DB.SIP("id", survey))
どこDoQuery
ですか
Shared Sub DoQuery(ByVal commandText As String, ByVal ParamArray params As SqlParameter())
Dim conn As SqlConnection = Nothing
Try
conn = GetOpenSqlConnection()
DoQuery(conn, commandText, params)
Finally
If conn IsNot Nothing Then conn.Dispose()
End Try
End Sub
上記のコードでは、主キーである id が自動的に生成されます。surveyid
その値を取得して、2番目のテーブルに挿入したいと思います。
Core.DB.DoQuery("insert into surveyquestioncategory(title, detail, surveyid) values(@title, @detail, @sid)",
Core.DB.SIP("title", categoryTitle.Text),
Core.DB.SIP("detail", categoryDetail.Text),
Core.DB.SIP("sid", Survey.ID))
そして、2番目のテーブルのIDを取得して、3番目のテーブルに値を挿入します。
最近挿入された行の id 値を取得するには、次を使用できます
Core.DB.DoQuery("SELECT SCOPE_IDENTITY() AS MostRecentID")
これは Web アプリケーションであり、複数のユーザーが同時にアプリケーションを使用しているためSCOPE_IDENTITY()
、間違った行の値を返す可能性があります。もしそうなら、どうすればそれを避けることができますか?
プログラミングについての私の無知を許してください。
あなたの助けに感謝。
ありがとうバシャビ