关于SQL触发器实现记录修改字段名称,变更前值,变更后值,变更时间 50
SQL触发器实现记录修改字段名称,变更前值,变更后值,变更时间当修改一张表的任意一个字段时在一张专门的表中记录下以上四项求明确的语句示例谢谢...
SQL触发器实现记录修改字段名称,变更前值,变更后值,变更时间
当修改一张表的任意一个字段时 在一张专门的表中记录下以上四项
求明确的语句示例谢谢 展开
当修改一张表的任意一个字段时 在一张专门的表中记录下以上四项
求明确的语句示例谢谢 展开
展开全部
大概写一下
1.建表
create table t1(
col varchar2(100);
before varchar2(100);
after varchar2(100);
updatedate date
)
2.建触发器
create or replace trigger TRG_UPDATE_T2 before update on t2
for each row
BEGIN
if(:old.col1!=:new.col1)
{insert into t2 values(col1.name,:old.col1,:new.col1,sysdate};/*插入日志表,不过若要唯一标示,t1表还得有一个主键,这里没写出来*/
if(:old.col2!=:new.col2)
{insert into t2 values(col2.name,:old.col2,:new.col2,sysdate};
...
commit;
END;
1.建表
create table t1(
col varchar2(100);
before varchar2(100);
after varchar2(100);
updatedate date
)
2.建触发器
create or replace trigger TRG_UPDATE_T2 before update on t2
for each row
BEGIN
if(:old.col1!=:new.col1)
{insert into t2 values(col1.name,:old.col1,:new.col1,sysdate};/*插入日志表,不过若要唯一标示,t1表还得有一个主键,这里没写出来*/
if(:old.col2!=:new.col2)
{insert into t2 values(col2.name,:old.col2,:new.col2,sysdate};
...
commit;
END;
追问
这两个IF是什么意思呢?能给翻译下吗 不明白 OLD 和NEW 指的是什么??为什么用两个IF对比两次?
追答
if是指修改前和修改后的字段值比较。不只是两个if,因为不知道是那个字段改的值,可能有多个字段,所以如果想要知道是哪一个就必须每一个都比较,有多少个字段就有多少个if。old是指修改前的值,new是指修改后的值,这个可以百度下update触发器。
展开全部
查 SQL Server2000数据表用触发器来生成操作日志
建一个触发器,在用户对表进行增/删/改时触发,将执行的SQL语句记录到日志表中:
程序代码
Create TRIGGER Loger ON student FOR Insert, Update, Delete AS SET NOCOUNT ON Create TABLE #T(EventType nvarchar(100),Parameters int,EventInfo nvarchar(500)) Insert #T exec('dbcc inputbuffer(' + @@spid + ')')
记录到日志表
Insert INTO DBLoger(LoginName,HostName,EventInfo,Parameters,EventType) Select suser_sname(),host_name(),EventInfo,Parameters,EventType FROM #T
查 如何用触发器实现记录数据库表和记录更改日志的操作
Create TRIGGER [dbo].[triINF_OrganLog]
ON 表
AFTER DELETE,UPDATE
AS
BEGIN
...
insert into 日志 select a.*,'del' from deleted a
...
insert into 日志 select a.*,'ins' from inserted a
...
建一个触发器,在用户对表进行增/删/改时触发,将执行的SQL语句记录到日志表中:
程序代码
Create TRIGGER Loger ON student FOR Insert, Update, Delete AS SET NOCOUNT ON Create TABLE #T(EventType nvarchar(100),Parameters int,EventInfo nvarchar(500)) Insert #T exec('dbcc inputbuffer(' + @@spid + ')')
记录到日志表
Insert INTO DBLoger(LoginName,HostName,EventInfo,Parameters,EventType) Select suser_sname(),host_name(),EventInfo,Parameters,EventType FROM #T
查 如何用触发器实现记录数据库表和记录更改日志的操作
Create TRIGGER [dbo].[triINF_OrganLog]
ON 表
AFTER DELETE,UPDATE
AS
BEGIN
...
insert into 日志 select a.*,'del' from deleted a
...
insert into 日志 select a.*,'ins' from inserted a
...
追问
看不太明白啊 大神。。。。
追答
按查询结果做个试验就行了
http://www.jb51.net/article/29273.htm
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询