BOS开发--用触发器监听某个字段发生了变化原创
金蝶云社区-余路生
余路生
6人赞赏了该文章 15次浏览 未经作者许可,禁止转载编辑于2024年11月22日 18:13:29

1 问题描述

        单据的某个字段值不知道为什么变化了,需要找出被什么功能修改的


2 方法

        可以在数据库创建触发器监听某个表的某个字段发生变化就回滚,系统就会报错,再根据报错信息分析

触发器:

CREATE TRIGGER 触发器名
ON 表名
FOR INSERT, UPDATE
AS
BEGIN
    SET NOCOUNT ON;
 
    -- 检查是否更新了特定的列
    IF UPDATE(字段名)
    BEGIN
        -- 可以使用SELECTed.YourColumnName来获取新的值
 
        -- 检查是否有尝试插入或更新导致YourField为空的操作
        IF EXISTS(SELECT * FROM inserted WHERE 字段名 is null)
        BEGIN
			RAISERROR('The YourField column cannot be null.', 16, 1);
			ROLLBACK TRANSACTION; -- 回滚事务,这样操作才不会被执行
        END
    END
END
GO

示例:

CREATE TRIGGER CheckTableFieldTrigger
ON CT_CFO_ProjectApprovalBill
FOR INSERT, UPDATE
AS
BEGIN
    SET NOCOUNT ON;
 
    -- 检查是否更新了特定的列
    IF UPDATE(FControlUnitID)
    BEGIN
        -- 可以使用SELECTed.YourColumnName来获取新的值
 
        -- 检查是否有尝试插入或更新导致YourField为空的操作
        IF EXISTS(SELECT * FROM inserted WHERE FControlUnitID is null)
        BEGIN
			RAISERROR('The YourField column cannot be null.', 16, 1);
			ROLLBACK TRANSACTION; -- 回滚事务,这样操作才不会被执行
        END
    END
END
GO


报错信息:

上传图片


图标赞 6
6人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!