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