对表T写一个触发器,当UPDATE数据的时候,记录到日志中去

解决方案 »

  1.   

    当更新表的时候,在表2中记录,修改人姓名,修改前的数据,修改后的数据,和修改时间
    表2:
    sname, preUpdate, afterUpdate, updateTime
    表1:
    sid, sname, sgender
      

  2.   

    大概:create trigger tr_表1_update
    on 表1
    for update
    as
    if update(sname)
    BEGIN
       RAISERROR ('不能修改姓名.',16, 1)
       ROLLBACK TRANSACTION
    ENDinsert 表2(sname, preUpdate, afterUpdate, updateTime)
    select i.sname,d.sgender,i.sgender,getdate()
    from inserted i,deleted d
    where i.sname=d.snamego
      

  3.   

    如果允许修改sname而不允许修改sid,最好表增加一个改前sname的字段,可以类似上面写
      

  4.   

    sname表示进行更新的操作员的姓名,afterUpdate和before是更新前后的值,只记录改sid,为int格式
      

  5.   

    楼主可以建一个表记录更新操作
    create trigger test_tr on 表A
    for 
    if update(列A)
    insert 日志表
    select * from deleted --更新前的数据
    union all
    select * from inserted--更新后的数据
      

  6.   

    修改的数据比较好办.修改人姓名,不知道从哪里来?Insert Into Table2 Values (sName,PreUpdate,AfterUpdate,UpdateTime)
    Select N'修改人姓名',Deleted.sName As PreUpdate,Inserted.sName As AfterUpdate,
           GetDate() As UpdateTime 
    From Inserted ,Deleted Wehre Inserted.sid=Deleted.sid 就可以插入一条记录到Table2中去,包含了修改前的数据,修改后的数据,和修改时间
    此处应该使用After Insert 或 After Update 存储过程.