0
DECLARE @IsDeleted AS BIT = 0;

    SELECT @IsDeleted = IsDeleted from Updated

    IF @IsDeleted=1 
    BEGIN
    UPDATE Reviews
    SET IsDeleted = @IsDeleted
    WHERE CompanyID = 1
END;

列が1に更新されReviewsたら更新したい。値が更新されているかどうかを判断する方法は「 1」ですCompany IsDeleted

エラーですSELECT @IsDeleted = IsDeleted from Updated

4

1 に答える 1

4

トリガーで使用可能な疑似テーブルが挿入または削除され、更新されたテーブルはありません。

t-sql と述べたので、SQL サーバーでは、トリガーは単一の行ではなくバッチで動作することを理解する必要があります。複数のレコード更新を処理するには、このトリガーを完全に書き直す必要があります。挿入または削除されたテーブルからのトリガーでは、スカラー変数の値に何も設定しないでください。代わりに JOin します (もちろん、更新するときは、現在の値が新しい値と一致するレコードを除外せずに update ステートメントを記述しないでください。2 つだけが変更されたときに 100 万のレコードを更新するのはばかげています。パフォーマンスは非常に重要です。そのため、更新する必要のないものを更新しないことがさらに重要です。

于 2013-05-29T17:41:05.703 に答える