create trigger trgcheck on aa
for update,insert,delete
as
declare @iCount int
declare @msg varchar(8000)
set @msg='金额超过某值!'
if update(金额)
begin
if @@rowcount=0 ---数据没有变动
return
else begin
select @iCount=sum(金额) from aa
if @iCount>某金额
raiserror @msg,16,-1
end
end
这个我没有测试,大概是这样,如你想更详细的,自己看书
1、用时间戳字段,你一改任何一列他本记录的时间戳就会改变的!
例:
declare @ table (a int,b timestamp)
insert @ values(1,null)
select * from @
update @ set a=2
select * from @
2、用触发器
CREATE TRIGGER 插入触发器 ON 表
FOR INSERT
AS
insert 日志表 (时间,动作,值) select getDAte(),'插入',* from inserted
go
CREATE TRIGGER 删除触发器 ON 表
FOR delete
AS
insert 日志表 (时间,动作,值) select getDAte(),'删除',* from deleted
go
CREATE TRIGGER 修改触发器 ON 表
FOR update
AS
insert 日志表 (时间,动作,值) select getDAte(),'修改前',* from deleted
insert 日志表 (时间,动作,值) select getDAte(),'修改后',* from inserted
go
我的想法是这样的:
新建一个表SumTable:SumValue(float)
原表建一个触发器
CREATE TRIGGER Tr_SumValue ON dbo.aa
FOR INSERT, UPDATE, DELETE
AS
Delete from SumTable
Select Sum(Value) into SumTable from aa