トリガーによって生成されたいくつかの疑わしいデータベース トランザクションをデバッグしようとしましたが、T-SQL をステップ実行すると、予期しない結果が発生しました。を介してカーソルから値を取得した後FETCH NEXT FROM Updated_Cursor
、while ループに入り、カーソルからフェッチされた行ごとに 2 つの変数を評価して、次のような処理の後に挿入が行われるかどうかを判断します。
WHILE @@FETCH_STATUS = 0
BEGIN
IF (@first_indicator > 0 AND @second_indicator >0)
BEGIN
--processing and insert occurs here
@first_indicator=1
デバッグ モードでコードをステップ実行すると、 の値とこの条件が true に評価されていることがわかりますが、@second_indicator=0
これは意味がありません。その結果、重複した誤った行が挿入されます。2 つの変数はbit
データ型であり、関連性があると思われますが、なぜこれが起こっているのかわかりません。