- PR -

トリガの制御に関して (SQL Server200)

1
投稿者投稿内容
べーちゃん
大ベテラン
会議室デビュー日: 2002/07/21
投稿数: 121
投稿日時: 2004-08-05 01:03
現在SQLServer2000のデータベースの設計をしているのですが、
トリガに関してちょっと困っております。

SQLコマンドを実行したり、EnterpriseManager等を利用して
データを更新した場合(つまり手動)と、ストアドプロシージャから
データを更新した場合とで、トリガの制御の流れを変えたいのです。

そこでネストレベルのグローバル変数を監視してみたのですが
どうやらQueryAnalyzerからSQLコマンドを実行して更新した時と
EnterpriseManagerからデータを更新した場合、ストアドプロシージャから
更新した場合とで、まちまちな結果が返ってきて、
結局これは利用できないとわかりました。

現在はとりあえずストアドプロシージャ専用のアカウントを
作成し、該当アカウントかどうかで判断するFunctionを呼び出して
流れを変えることにとりあえず成功したのですが、なんかすっきりしません。
将来顧客が新しいユーザーを作成した場合、このままだと
Functionの更新を行う必要が出てきてしまうからです。
(まあ最終的にはsp_helprolememberをfetchするかもしれません)

そこで、根本的な質問ではあるのですが
・ストアドプロシージャからトリガの起動を抑制することは可能なのか
 (dbo以外のユーザーで)
・トリガを起動しているのがユーザーストアドプロシージャに
 よるものかそうでないかを判断する方法があるか

についてご存知の方がおられましたら、教えていただけると助かります。


[ メッセージ編集済み 編集者: べーちゃん 編集日時 2004-08-05 01:07 ]
1

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