- PR -

SQLServer トリガを仕掛けたところテーブル更新ができない

投稿者投稿内容
ハチャ
会議室デビュー日: 2007/10/01
投稿数: 11
投稿日時: 2007-11-15 16:24
間があいてしまいました。

様々なご意見ありがとうございます。

ようやく、プログラムを見直す機会ができまして確認した結果、
ソース上に
『INSERT時には1件しか登録していないから
 sqlCmd.ExecuteNonQuery()の値は必ず1しか返らないはず』
という過剰なエラーチェックが実装されていました。
sqlCmd.ExecuteNonQuery()はトリガの処理件数もあわせてカウントしているようで
そこではじかれていました。

なんか場違いな質問になってしまい申しわけありませんでした。

でも、トリガのつくりに関して様々なご意見を頂き
ありがとうございました。

まだ直せてないですが、1点質問で、
ORACLEには1行ずつトリガを発行する行トリガなるものがあると
知りました。
上総さんがおっしゃっているカーソルとは行トリガと同じ機能なのでしょうか?
また、実装の仕方はどのようになりますでしょうか?
上総
大ベテラン
会議室デビュー日: 2006/06/22
投稿数: 107
投稿日時: 2007-11-15 16:43
引用:

上総さんがおっしゃっているカーソルとは行トリガと同じ機能なのでしょうか?
また、実装の仕方はどのようになりますでしょうか?



SQL Serverに行トリガがあるかどうかは残念ながら判りません。
(仕事で使用しているのがOracle・PostgreSQLなので)

只、私が記載したカーソルとは『DECLARE カーソル名 CURSOR FOR SQL文』で定義する、
カーソルの事で大抵のDBで使用できます。
(これについては文献を参考にしていますので間違いないかと)
そしてカーソルからのデータの取得は1行づつと成りますので、複数件をまとめて
処理を行った場合も、トリガ内で1行づつデータを取得し処理を行うので他のレコード
による結果に影響される事がありません。
そういった意味であれば行トリガと似たようなものかもしれません。
(自分で実装するしかありませんが。)

参考文献
ISBN:ISBN4-7741-1755-2
書籍名:[改定新判]SQL ポケットリファレンス

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