SQL 服务器触发器 - 一次更新一个字段,一次不为空

SQL Server triggers - Update one field one time once another isn't null

我对触发器相当陌生,如果 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

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

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