QA@IT

SQLServerのトリガで発生したエラーを、ASP(VBScript)で捕捉したい

5122 PV

ASPからSQLServer 2005に更新SQLを実行し、その結果動作したトリガの中でエラーが発生した時、
この発生したエラーがASP側で捕捉できなかったので、以下のようなテストプログラムを書いて調べてみました。
結果、トリガ内の2つ目以降のSQLででエラーが発生するとASP側でエラーがとれないということがわかりました。
これは何か解決方法ありますでしょうか・・・?

対象テーブル

[TEST_TABLE]:項目は数値型項目 a のみで、主キー。

トリガのCREATE文

CREATE  TRIGGER [TR_TEST_TABLE_UPDATE]
ON  [TEST_TABLE]
FOR INSERT,UPDATE,DELETE
AS
        INSERT INTO TEST_TABLE (a) VALUES (0)
        INSERT INTO TEST_TABLE (a) VALUES (0)  -- このINSERT文でPrimary Key違反のエラーを起こす

ASP(VBScript)

<%@ Language=VBScript %>
<% Option Explicit %>
<html>
<body>
<ul>
<%
Dim objConn
Dim objRS
Dim recordCount

On Error Resume Next

Set objConn = CreateObject("ADODB.Connection")
objConn.Provider = "SQLOLEDB"
objConn.ConnectionString =  "User ID=user;Password=pass;Database=dbname;Server=servername"
objConn.Open 
Set objRS=server.CreateObject ("ADODB.Recordset")

objConn.execute "INSERT INTO [TEST_TABLE] ([a]) VALUES (1)", recordCount

Response.Write "<li>recordCount=" & recordCount & "</li>"
Response.Write "<li>err.Number=" & err.Number & "</li>"
Response.Write "<li>err.Description=" & err.Description & "</li>"

Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
</ul>
</body>
</html>

実行結果

・recordCount=1
・err.Number=0
・err.Description= 
・DB自体にはどの行もINSERTされません

なお、トリガの最初のSQLがエラーになるようにすると、errオブジェクトからエラー情報を取得できています。

回答

ウォッチ

この質問への回答やコメントをメールでお知らせします。