外部CRMによってデータベースが部分的に作成および編集されており、特定のテーブルにはトリガーの後に複数(最大で2つ)があります。これは、1つのトリガーがCRM(制御が制限されている)によって自動生成され、もう1つのトリガーにコードが含まれているためです。
CRMトリガーは、挿入されたデータ行の主キーを生成します。私のトリガーは、外部キーとして別のテーブルに書き込むために、その主キーにアクセスする必要があります。私が使う
Select @id=max(id) from mytable
Scope_Identityが何らかの形で目的の結果を生成しなかったためです。
これは、CRMにテーブルと独自のトリガーを再作成させるまで機能しました。私のトリガーによって選択されたそのテーブルの最大IDは、常にactual_id-1であるように見えました。
同じコードを使用してトリガーを変更すると、常にプロシージャが再び機能します。
私の質問は次のとおりです。SQLサーバー(SQL Server 2008を使用しています)は、作成時間によってトリガーの順序を設定しますか?
そして
sp_settriggerorder @triggername='mycustomtrigger', @order='Last', @stmttype='INSERT'
これを永続的に変更する予定ですか、それともCRMがトリガーを再作成するたびに、そのプロシージャを再度呼び出す必要がありますか?(ALTERではなくDROPとCREATEを使用)
それに対する答えが、同じ問題を見ている人の助けになることを願っています。
よろしく