有没有办法在当前使用触发器插入记录之前更新记录的字段?

时间:2017-12-15 00:02:37

标签: sql-server triggers

实际上,我一直试图通过触发器来更新我的表'TYPE_CHANGE'的字段“状态”,但我没有成功。我不明白为什么我错过了一个错误,说“语法错误”,如果我提取的是一个日期时间,我将它与日期时间进行比较。我需要帮助。非常感谢你提前。

CREATE TRIGGER TG_UPD_TIPO_CAMBIO ON TIPO_CAMBIO
AFTER INSERT
AS
    BEGIN
     SET NOCOUNT ON;  
        DECLARE @VNIDMONEDA INT
        DECLARE @VDFECHATIPOCAMBIO DATETIME

        SELECT @VNIDMONEDA = NIDMONEDA, @VDFECHATIPOCAMBIO = DFECHATIPOCAMBIO FROM inserted  

        UPDATE TIPO_CAMBIO
        SET
            TIPO_CAMBIO.NESTADO = 0
        WHERE
            TIPO_CAMBIO.NIDMONEDA = @VNIDMONEDA AND 
            TIPO_CAMBIO.DFECHATIPOCAMBIO < @VDFECHATIPOCAMBIO

错误是:“男士102,Nivel 15,Estado 1,Procedureimiento TG_UPD_TIPO_CAMBIO,Línea41 '@VDFECHATIPOCAMBIO'附近的语法不正确。“

enter image description here

1 个答案:

答案 0 :(得分:0)

插入可能包含多行。你在做什么不处理

    UPDATE t
    SET
           TIPO_CAMBIO.NESTADO = 0
    FROM   
           INSERTED i
           INNER JOIN TIPO_CAMBIO t
           ON  t.TIPO_CAMBIO.NIDMONEDA        = i.VNIDMONEDA 
    WHERE 
           t.TIPO_CAMBIO.DFECHATIPOCAMBIO < i.VDFECHATIPOCAMBIO