建立触发器把修改的记录下来
create table 表 (a int)
go
CREATE TRIGGER 名 ON 表
FOR UPDATE
AS
insert 日志表 (数据,操作,时间) select *,'改前',getDate() from deleted
insert 日志表 (数据,操作,时间) select *,'改后',getDate() from inserted
go
CREATE TRIGGER 名 ON 表
FOR insert
AS
insert 日志表 (数据,操作,时间) select *,'插入',getDate() from inserted
go

解决方案 »

  1.   

    to:大力
         看了您給我的答案,我想肯定可以解決問題,雖然我不是十分懂,我會去查一些相關觸發器的資料,在sql方面我實在是不懂,本來我是用asp將這些資料放在網上的,可我的老板要有版本更新問題。
       如果您有時間,可以幫我具體做做嗎?我將資料表顯示出來,我就省去了摸索的過程了,非常感謝!
    表一:(主表)
       訂單編號  接單日期  訂單交期  版本號  更新時間 
    表二:(細表)
       訂單編號  產品名  訂單數量  單位 版本號
    通過訂單編號相關聯
        希望報表如下:隻要有任何更改的話,就以新版本顯示,之前的版本保留下來,可以去查。細表裡的每一筆記錄都要顯示它屬於第幾個版本。如:
      訂單編號  20030301   接單日期 2003/3/1   訂單交期 2003/5/1  版本號 2 更新時間 默認  產品名      訂單數量  單位   版本號
    02001       1000        pcs     1
    02002        800        pcs     2
    02005        900       pcs      1
    第二條記錄是屬於第二版本的更新記錄,一看就知道是屬於第二次修改的資料。
    非常感謝您的幫忙
      

  2.   

    哦!
    你可以做替代操作触发器如:
    CREATE TRIGGER 名 on 表
    INSTEAD OF update   ---------当表被update的时候
    AS
    BEGIN
      INSERT 表 SELECT *,(select count(*)+1 from 表 where 產品名=inserted.產品名) FROM inserted
    END
      

  3.   

    如:
    create table 表(编号 int,数据 int,版本号 int)
    go
    CREATE TRIGGER 名 on 表
    INSTEAD OF update
    AS
    BEGIN
      INSERT 表 SELECT 编号,数据,(select count(*)+1 from 表 where 编号=inserted.编号) FROM inserted
    END
    go
    insert 表 values (1,111,1)
    insert 表 values (2,222,1)
    go
    update 表 set 数据=333 where 编号=1
    go
    select * from 表