记录改前和改后的情况如何保存?(100)

  • 主题发起人 主题发起人 lingmao3
  • 开始时间 开始时间
L

lingmao3

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾,现在有一张表,其中有字段:编号,A,B,C,D,E,F...字段,我想让在操作任何一条记录保存时如果和操作前的记录不一致时,做一条日志,对比出改动前和改动后的记录.但现在的问题操作人员会改变其中一个或几个字段,我想如何得出哪几个字段被改了.并把改前和改后的存到另一个log表(log表中,有字段:编号,改动字段,改前值,改后值.)中,作对比.是变哪条记录我就记哪条,不是整条都记下来,只是记下变动的字段.
 
我用sqlserver触发器已解决了除TEXT字段外的所有问题,现贴出来,供大家一起学习.CREATE TRIGGER tri_test ON t_test FOR INSERT ,UPDATE AS DECLARE @beforesex varchar(8),@aftersex varchar(8),@rep varchar(8)SELECT @rep = 编号 FROM deletedSELECT @beforesex= 电话 FROM deletedSELECT @aftersex= 电话 FROM insertedIF UPDATE(电话)BEGININSERT INTO t_testlog(更新时间,编号,改前值,改后值) VALUES (getdate(),@rep,@beforesex, @aftersex) END如果有电话被修改,就在t_testlog表中增加一条记录.可是有无高手如何记录TEXT型字段的变动记录?变前的值怎么做?
 
CREATE TRIGGER tri_test ON t_test instead OF UPDATE AS DECLARE @beforesex varchar(8),@aftersex varchar(8),@rep varchar(8)SELECT @rep = 编号 FROM deletedSELECT @beforesex= 备注 FROM deletedSELECT @aftersex= 备注 FROM insertedIF UPDATE(备注)BEGININSERT INTO t_testlog(更新时间,编号,改前值,改后值) VALUES (getdate(),@rep,@beforesex, @aftersex) END就可以解决这问题,可是update并没有生效更新,如何让updat继续进行下去.
 
服务器: 消息 311,级别 16,状态 1,过程 tri_test,行 10不能在 'inserted' 表和 'deleted' 表中使用 text、ntext 或 image 列。---------好像在触发器中不好处理text类型变量。
 
是可以的,只是无法取值改前记录.求教?批量更新出错,提示"超时已过期",怎么解决?SQL SERVER企业管理器-》右键 服务器-》属性-》连接选项页-》查询超时设定改为0.是可以解决,但我想速度加快,能全部记录进去.
 
后退
顶部