触发不应该更新?

时间:2017-10-27 12:53:36

标签: sql-server tsql triggers

为什么即使nb_aff为30,它仍然会加1?

CREATE TRIGGER T 
ON affectation 
AFTER INSERT 
AS
    DECLARE @A INT

    SELECT @A = nb_aff 
    FROM EQUIPEMENT

    IF @A < 30 
    BEGIN
        UPDATE EQUIPEMENT
        SET nb_aff = nb_aff +1
        FROM EQUIPEMENT M 
        INNER JOIN INSERTED I ON M.code_eq = I.cod_eq 
    END

1 个答案:

答案 0 :(得分:0)

因为你读错了nb_aff

select @A = nb_aff from EQUIPEMENT

您可以像这样更改此行

select @A = nb_aff from EQUIPEMENT M 
        INNER JOIN INSERTED I ON M.code_eq = I.cod_eq 

或者您可以像这样更改所有触发器。

CREATE TRIGGER T ON affectation AFTER INSERT AS

    UPDATE EQUIPEMENT
        SET nb_aff = CASE WHEN nb_aff < 30 
                          THEN nb_aff + 1 
                          ELSE nb_aff END
    FROM 
        EQUIPEMENT M 
        INNER JOIN INSERTED I ON M.code_eq = I.cod_eq 
相关问题