- PR -

SQLServerに対する.NET FrameworkのSqlCommandクラスのExecuteNonQueryメソッド

1
投稿者投稿内容
Nia
会議室デビュー日: 2008/04/08
投稿数: 2
投稿日時: 2008-04-08 14:13
お知恵いただけないでしょうか。

.NET FrameworkのSqlCommandクラスのExecuteNonQueryメソッドを使用して、
SQLServerのテーブルにINSERTコマンドを実行しております。
その際、同テーブルにトリガを設定しているのですが、
ExecuteNonQueryメソッドはトリガの終了まで判断した上で、
処理を.Netに返しているのでしょうか。

ちなみに、
現状ExecuteNonQueryメソッドをFor〜Nextを回しているのですが、
例外が発生しております。
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2008-04-08 18:12
さかもとと申します。

http://msdn2.microsoft.com/ja-jp/library/system.data.sqlclient.sqlcommand.executenonquery.aspx

これですね。

>>現状ExecuteNonQueryメソッドをFor〜Nextを回しているのですが、
>>例外が発生しております。

これだけだと、トリガの終了判定が原因で例外が発生しているかどうかは分らないと思います。どのような例外なのでしょうか?for〜の1回目で例外?2回目で例外?など。

_________________
------------------------------------------
拝啓、さかもとと申します♪
Nia
会議室デビュー日: 2008/04/08
投稿数: 2
投稿日時: 2008-04-09 13:22
ありがとうございました。
私もちょうどそのページを参照しておりました。

For〜Nextに関しては、1回目で無いことは確かな状況です。
別で作成しているため、例外内容に関しては現状確認はできておりません。

ありがとうございました。
未記入
大ベテラン
会議室デビュー日: 2008/02/07
投稿数: 115
投稿日時: 2008-04-09 14:34
引用:

ExecuteNonQueryメソッドはトリガの終了まで判断した上で、処理を.Netに返しているのでしょうか。


.NET は関係ありません。が、結果としてはトリガーの終了まで判断した上で .NET に制御が戻ります。なぜかというと、トリガーが完了するまでトリガー発生元の INSERT も完了しないからです。

もしも、トリガーが失敗しても INSERT だけは成功させたいということであれば .NET ではなくデータベース設計として誤っていますから、トリガーではなく別の方法を模索する必要があります。
1

スキルアップ/キャリアアップ(JOB@IT)