0

次の単純化された DB モデルがあります。

ここに画像の説明を入力

お仕事付きのプランもございます。ジョブにはロケーションのオブジェクト ID が含まれていますが、明示的にテーブルに関連付けられていませんLocation

テーブルのON DELETEトリガーがありますLocationobjectidジョブの を -1にリセットするトリガーが必要です。

update dbo.Job 
set objectid = -1, lat = -1, lng = -1, location = null 
from
   (dbo.[Plan] as p 
    inner join dbo.Job as j on (p.planid = j.planid 
                                and p.userid in (select user_id from deleted)))
    inner join deleted as d on j.objectid = d.objectid

私の問題:

このトリガーは、ジョブが別の に属している場合でも、一致するすべてのobjectid をリセットしますaspnet_Usersaspnet_User対応するジョブのみがトリガーの影響を受けるようにするにはどうすればよいですか?

4

1 に答える 1

1

演算子ではなく結合でobjectidと列の両方を使用する必要があると思います。useridIN

aspnet_Usersまた、なぜ追加する必要があるのか​​ わかりません:

update 
        dbo.Job 
set 
        objectid = -1, lat = -1, lng = -1, location = null 
from
        dbo.Job as j 
    join
        dbo.Plan as p   on  p.planid = j.planid
    join
        deleted as d    on  d.objectid = j.objectid
                        and d.user_id = p.userid ;
于 2012-12-04T16:50:14.990 に答える