获取触发器中列的更新值

时间:2013-05-29 17:34:06

标签: sql-server tsql select triggers sql-update

DECLARE @IsDeleted AS BIT = 0;

    SELECT @IsDeleted = IsDeleted from Updated

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

如果Reviews Company列更新为1,我想更新IsDeleted。 如何确定更新值是' 1 '

错误SELECT @IsDeleted = IsDeleted from Updated

1 个答案:

答案 0 :(得分:4)

插入或删除触发器中可用的伪表,没有更新的表。

既然你说过t-sql,你应该明白在SQL服务器触发器中操作批处理而不是单行操作。需要完全重写此触发器以处理多个记录更新。不要在插入或删除的表中为触发器中的标量变量的值设置任何值。加入他们(当然,当你更新时,不要写一个更新语句而不排除当前值与新值匹配的任何记录。当只有2个更改时,更新一百万条记录愚蠢。性能至关重要ina触发器,因此更新不需要更新的东西更为重要。