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人打赏
还没有人打赏,快来当第一个打赏的人吧!