■ロジック Imports System.Data.SqlClient ----------------------------------- Public Function FunctionAAA (ByVal 引数1 As String, ByVal 引数2As String, ByVal 引数3 As String) As Boolean
Dim sqlManger As New SQLManager("接続文字列") TRY 処理A Catch ex As Exception エラー処理 Return False
分類:[ASP.NET]
TRY処理の括りでBeginTrans()を実施し
DELETE処理を実施後、INSERT処理を実施した場合に
INSERT処理で重複エラーがでます。
ASP.NETの仕様でしょうか。
TRY括りで仮想化された同一空間内だと思うのですが、
コーディングミスによる影響でDELETE、INSERT処理がうまく実施されないのでしょうか。ご教示、アドバイス願います。
■ロジック
Imports System.Data.SqlClient
-----------------------------------
Public Function FunctionAAA
(ByVal 引数1 As String, ByVal 引数2As String, ByVal 引数3 As String)
As Boolean
Dim sqlManger As New SQLManager("接続文字列")
TRY
処理A
Catch ex As Exception
エラー処理
Return False
End Try
TRY
''TBL削除処理
Const DELETE_NG_DETAIL_SQL As String = "DELETE" & vbCrLf _
& " FROM ng_detail" & vbCrLf _
& " WHERE" & vbCrLf _
& " 項目A = @設定値" & vbCrLf
sqlManger.ClearParams() ''SQLパラメータ初期化
sqlManger.AddParam("@設定値", Data.SqlDbType.VarChar, 引数1) ''SQLパラメータ設定
affected = sqlManger.ExecuteNonQuery(DELETE_NG_DETAIL_SQL) ''SQL実行
sSql = "" & vbCrLf
sSql = sSql & " INSERT INTO ng_detail" & vbCrLf
sSql = sSql & " SELECT" & vbCrLf
sSql = sSql & " 項目A , 項目B ,項目C , getdate() , getdate() , " & vbCrLf
sSql = sSql & " '" & tantoTxt.Text & "'" & vbCrLf
sSql = sSql & " FROM" & vbCrLf
sSql = sSql & " TBL_ABC (nolock)" & vbCrLf
sSql = sSql & " WHERE" & vbCrLf
sSql = sSql & " 項目A = '" & 引数1 & "'" & vbCrLf
sSql = sSql & " AND 項目B <> 0 " & vbCrLf
sSql = sSql & " GROUP BY 項目A" & vbCrLf
sSql = sSql & "" & vbCrLf
affected = sqlManger.ExecuteNonQuery ''SQL実施
If sqlManger.HasError Then
sqlManger.GetLastException().Message
Else
Logger.Debug("NGD:" & affected & "件登録")
End If
Catch ex As Exception
sqlManger.RollbackTrans
sqlManger.ClearParams
Return False
End Try
sqlManger.CommitTrans
sqlManger.ClearParams
Return True
End Function
宜しくお願いいたします。