我现在想完成一个功能
就是假如我要修改一条记录的同事把把我修改前的值和修改后的值记录到一张日志表里。这个怎么搞啊。想的头都大了
例子:
表1
ID   NAME
1      a
2      b
3      c
日志表
ID     OPINFO
 假如我修改表1,ID号为1的NAME值为AAA的话。我想往日志表OPINFO列中插入“你把表1中ID号为1的NAME值修改为AAA”
各位帮帮忙

解决方案 »

  1.   

    像这样的操作日志的记录,一般来说:时间,ip地址,操作人,操作种类(增删改),描述
    1.共有数据记录:要记录数据操作的时间,ip地址,操作人,种类
    2.具体数据:象楼主列出的,只是这部分应该主要集中在状态或者标志上,具体数据写在描述字段
      

  2.   

    像这样的操作日志的记录,一般来说:时间,ip地址,操作人,操作数据的id(确定具体操作的是那条数据,若各张表有可能出现重复id,可以考虑把表明也作为一列写进来),操作种类(增删改),描述 
    1.共有数据记录:要记录数据操作的时间,ip地址,操作人,种类 
    2.具体数据:象楼主列出的,只是这部分应该主要集中在状态或者标志上,具体数据写在描述字段
    在确定数据操作完成之后,在保存日志表即可
      

  3.   

    set nocount on
    if object_id('tb')is not null drop table tb
    go
    create table tb(ID int,  [NAME] varchar(10),[meno]varchar(10)) 
    insert tb select 1  ,    'a','d' 
    insert tb select 2 ,     'b','e' 
    insert tb select 3,      'c','f' 
    --日志表 
    if object_id('tb_log')is not null drop table tb_log
    go
    --ID    OPINFO 
    create table tb_log(ID int,[name修改前]varchar(10),[name修改后] varchar(10),[meno修改前] varchar(10),
    [meno修改后] varchar(10))
    --创建触发器
    if object_id('tri_update')is not null drop trigger tri_update
    go
    create trigger tri_update on tb
    for update
    as
    insert tb_log select i.id,d.[name],i.[name],d.[meno],i.[meno]
    from inserted i inner join deleted d on i.id=d.id
    go
    update tb set [name]='AAA',meno='DDD' where id=1
    select * from tb_log
    /*ID          name修改前    name修改后    meno修改前    meno修改后
    ----------- ---------- ---------- ---------- ----------
    1           a          AAA        d          DDD*/