需求:当主数据状态更新为无效时,同时将关系表中的关联记录修改成无效状态。
在 SQL Server 中,触发器使用 inserted 和 deleted 临时表来引用发生 INSERT、UPDATE 或 DELETE 操作的行。这两个临时表提供了对受影响行的访问。在触发器中,inserted 表包含了插入或更新后的新值,而 deleted 表包含了更新或删除前的旧值。
对于触发器中的 INSERT 操作,只有 inserted 表被填充。对于触发器中的 UPDATE 操作,inserted 表包含新值,而 deleted 表包含旧值。对于触发器中的 DELETE 操作,只有 deleted 表被填充。
CREATE TRIGGER ORG_INACTIVE_Trigger
ON e_org_attribute
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF UPDATE(party_status_cd)
BEGIN
DECLARE @NewPartyStatus NVARCHAR(255);
DECLARE @PrimaryKey INT; -- 假设主键的数据类型是 INT,根据实际情况修改数据类型
SELECT @NewPartyStatus = i.party_status_cd,
@PrimaryKey = i.integration_id
FROM inserted i;
IF @NewPartyStatus = 'INACTIVE'
BEGIN
-- 失效站点数据
UPDATE central_site_pending
SET loaddt = NULL,
status = '无效',
end_time = CAST ( GETDATE( ) AS DATE ),
update_by = 'ORGINACTIVE',
update_time = CONVERT ( VARCHAR, GETDATE( ), 120 )
WHERE
(station_code = @PrimaryKey OR center_code=@PrimaryKey)
AND status = '有效';
END
END
END;