建立触发器把修改的记录下来
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
解决方案 »
- 为啥我的NHibernat总是提示“No persister for: Test.Model.TPerson”异常,在线等...
- 数据库事物的理解 !
- 请问在设置外键时,被引用的主表字段是这张表的主键之一,而设置的外键不是外键表的主键,这样设置能否成功?
- MS SQL作业问题请教大虾
- 求助高手 怎么将这段在ABCVVV上的程序改成在ABC003服务器运行
- 高难度sql语句,请大家帮忙
- 怎样才能把2000版的SQL Server数据库备份为7.0版的格式?
- 数据库列表显示问题。
- sql语句选择列表中,聚合函数如何做除法
- 我应该怎样着手学习SQL SERVER 2000 ?请各位大虾指教
- 请问这个触发器怎么写
- SQL查询 紧急求教!!
看了您給我的答案,我想肯定可以解決問題,雖然我不是十分懂,我會去查一些相關觸發器的資料,在sql方面我實在是不懂,本來我是用asp將這些資料放在網上的,可我的老板要有版本更新問題。
如果您有時間,可以幫我具體做做嗎?我將資料表顯示出來,我就省去了摸索的過程了,非常感謝!
表一:(主表)
訂單編號 接單日期 訂單交期 版本號 更新時間
表二:(細表)
訂單編號 產品名 訂單數量 單位 版本號
通過訂單編號相關聯
希望報表如下:隻要有任何更改的話,就以新版本顯示,之前的版本保留下來,可以去查。細表裡的每一筆記錄都要顯示它屬於第幾個版本。如:
訂單編號 20030301 接單日期 2003/3/1 訂單交期 2003/5/1 版本號 2 更新時間 默認 產品名 訂單數量 單位 版本號
02001 1000 pcs 1
02002 800 pcs 2
02005 900 pcs 1
第二條記錄是屬於第二版本的更新記錄,一看就知道是屬於第二次修改的資料。
非常感謝您的幫忙
你可以做替代操作触发器如:
CREATE TRIGGER 名 on 表
INSTEAD OF update ---------当表被update的时候
AS
BEGIN
INSERT 表 SELECT *,(select count(*)+1 from 表 where 產品名=inserted.產品名) FROM inserted
END
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 表