大概: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
楼主可以建一个表记录更新操作 create trigger test_tr on 表A for if update(列A) insert 日志表 select * from deleted --更新前的数据 union all select * from inserted--更新后的数据
修改的数据比较好办.修改人姓名,不知道从哪里来?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 存储过程.
表2:
sname, preUpdate, afterUpdate, updateTime
表1:
sid, sname, sgender
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
create trigger test_tr on 表A
for
if update(列A)
insert 日志表
select * from deleted --更新前的数据
union all
select * from inserted--更新后的数据
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 存储过程.