关于触发器的超难问题,请高手帮忙,对不起,只有二○分了。
我有2个问题:
1。我写了一个触发器,记录某个表某些字段的值变更时,将变更的记录组合成一个串,存在一个字段里,因为是后来修改的记录就排在这个串的后面,有什么办法让后改的内容显示放在前面呢。那个字段的值要类似于如下:
2003-12-30修改了如下内容:修改为:“”
通讯地址原为:北京市朝阳区东土城路建达大厦1519
2003-08-06修改了如下内容:
其中:专职原为:10 修改为:“”
机构总人数原为:32 修改为:“”
2003-07-23修改了如下内容:
有效期起始原为:2001-07-20 修改为:“”
有效期终止原为:2003-07-19 修改为:“”
我目前的结果是最新的改动日期在最后,有没有办法让这个字段的值向上面那样显示。
2。客户还要求显示是哪个用户操作的,就是在上面的那个字段里显示,
小张2003-12-30修改了如下内容:修改为:“”
通讯地址原为:北京市朝阳区东土城路建达大厦1519
小王2003-08-06修改了如下内容:
其中:专职原为:10 修改为:“”
机构总人数原为:32 修改为:“”
这个用户名如何从程序里传到触发器里呢。
请大家帮帮忙,我头都大了?
问题点数:0、回复次数:1Top
1 楼pass2005(我自横刀向天笑,去留肝胆两昆仑)回复于 2005-02-02 10:52:57 得分 0
触发器代码入下:
CREATE trigger tri_updateAppraiserDw on dbo.AppraiserInfo
for update
as
begin
declare @str varchar(4000)
declare @strTitle varchar(50)
declare @OldDw varchar(100)
declare @NewDw varchar(100)
IF NOT UPDATE(DwID)
RETURN
set @str=''
set @strTitle='<br>'+convert(varchar(20),getdate(),120)+'修改了如下信息:'
if update(DwID)
select @OldDw=t.CompanyName from deleted d,DepartmentInfo t where t.iD=d.DwID
select @NewDw=t.CompanyName from inserted i ,DepartmentInfo t where t.iD=i.DwID
select @str=@str+'<br> 执业单位由'''+@OldDw+'''修改为'''+@NewDw+''';' from deleted d,inserted i where i.id=d.id and i.DwID<>d.DwID
if @str<>''
update a set a.ZhiDanChange=convert(varchar(8000),isnull(a.ZhiDanChange,''))+' '+@strTitle+@str,a.ChangeDay=convert(varchar(20),getdate(),120) from AppraiserInfo a,deleted b where a.id=b.id
end
Top




