【问题标题】:SQL Server triggers - Update one field one time once another isn't nullSQL Server 触发器 - 一次更新一个字段,一旦另一个字段不为空
【发布时间】:2015-05-05 22:58:04
【问题描述】:

我对触发器相当陌生,如果 Field1 为 null,我会尝试使用 Field2 中的值更新它,只要 Field2 在更新或插入时不为 null。换句话说,我想保留“NonAccrual”中的第一个非空值并将其存储在“OriginalNonAccrual”中。一旦 OriginalNonAccrual 获得一个值,即使 NonAccrual 发生变化,它也应该无限期地保持不变。我不知道一个触发器是否可以同时处理插入和更新,希望下面的代码能让您了解我正在尝试做什么。谢谢!

CREATE TRIGGER tr_SAG_Accrual
ON [dbo].[SAG]
AFTER INSERT, UPDATE
AS
BEGIN
    Declare @NonAccrual date
    Declare @OriginalNonAccrual date

    Select @NonAccrual = NONACCRUAL_DATE
         , @OriginalNonAccrual = OriginalNonAccrualDate 
    from inserted

    IF @OriginalNonAccrual IS NULL AND NOT @NonAccrual IS NULL
        SET @OriginalNonAccrual = @NonAccrual
END

【问题讨论】:

    标签: sql sql-server database triggers


    【解决方案1】:

    不需要任何这些变量,只需执行以下操作.....

    CREATE TRIGGER tr_SAG_Accrual
    ON [dbo].[SAG]
    AFTER INSERT, UPDATE
    AS
    BEGIN
     SET NOCOUNT ON;
    
      UPDATE S 
       SET S.OriginalNonAccrualDate = i.NONACCRUAL_DATE
      FROM [dbo].[SAG] S  INNER JOIN inserted i 
      ON s.Pk_Column = i.Pk_Column     --<-- Whatever your Primary key columns is
      WHERE i.OriginalNonAccrualDate IS NULL
    
    END
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      • 2021-01-15
      • 1970-01-01
      • 2022-12-12
      相关资源
      最近更新 更多