Sqlserver数据库触发器sql案例
2023-12-25 14:16:52
前言
需求:当主数据状态更新为无效时,同时将关系表中的关联记录修改成无效状态。
为什么要From inserted去查询主键和状态?
在 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;
文章来源:https://blog.csdn.net/java18343246781/article/details/135194208
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!