SQL Server触发器-一次更新一个字段,另一次更新一个字段是';t空

SQL Server触发器-一次更新一个字段,另一次更新一个字段是';t空,sql,sql-server,database,triggers,Sql,Sql Server,Database,Triggers,我对触发器还比较陌生,我正在尝试用Field2的值更新Field1,只要Field2在更新或插入时不为null。换句话说,我想保留“NonAccrual”中的第一个非null值,并将其存储在“OriginalNonAccrual”中。一旦OriginalNonAccrual获得一个值,即使NonAccrual发生更改,它也应该无限期保持不变。我不知道一个触发器是否可以同时处理插入和更新,希望下面的代码能让您了解我要做的事情。谢谢大家! CREATE TRIGGER tr_SAG_Accrual

我对触发器还比较陌生,我正在尝试用Field2的值更新Field1,只要Field2在更新或插入时不为null。换句话说,我想保留“NonAccrual”中的第一个非null值,并将其存储在“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
CREATE TRIGGER tr_SAG_
关于[dbo].[SAG]
插入后,更新
作为
开始
不计数;
更新
设置S.OriginalNonAccrualDate=i.NONACCRUAL\u日期
从[dbo].[SAG]插入的内部联接i
在s.Pk_列上=i.Pk_列--