前言
需求:当主数据状态更新为无效时,同时将关系表中的关联记录修改成无效状态。
为什么要From inserted去查询主键和状态?
在 SQL Server 中,触发器使用 inserted 和 deleted 临时表来引用发生 INSERT、UPDATE 或 DELETE 操作的行。这两个临时表提供了对受影响行的访问。在触发器中,inserted 表包含了插入或更新后的新值,而 deleted 表包含了更新或删除前的旧值。
对于触发器中的 INSERT 操作,只有 inserted 表被填充。对于触发器中的 UPDATE 操作,inserted 表包含新值,而 deleted 表包含旧值。对于触发器中的 DELETE 操作,只有 deleted 表被填充。
触发器编写
CREATE TRIGGER ORG_INACTIVE_TriggerON e_org_attributeAFTER UPDATEASBEGINSET NOCOUNT ON;IF UPDATE(party_status_cd)BEGINDECLARE @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 = '有效';
ENDEND
END;