0

我有以下简化的数据库模型:

在此处输入图像描述

有工作计划。Jobs 包含位置的 objectid,但它们没有与 table 显式关联Location

我有一个ON DELETE表的触发器Location。我希望触发器将作业的 's 重置objectid为 -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_Users. 我怎样才能实现只有相应aspnet_User的工作受触发器影响?

4

1 回答 1

1

我认为您需要将objectidanduserid列与连接一起使用,而不是与IN运算符一起使用。

另外,我不明白为什么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 回答