关于SQL触发器实现记录修改字段名称,变更前值,变更后值,变更时间 50

SQL触发器实现记录修改字段名称,变更前值,变更后值,变更时间当修改一张表的任意一个字段时在一张专门的表中记录下以上四项求明确的语句示例谢谢... SQL触发器实现记录修改字段名称,变更前值,变更后值,变更时间
当修改一张表的任意一个字段时 在一张专门的表中记录下以上四项
求明确的语句示例谢谢
展开
 我来答
半斤加小八两
2015-07-08 · 超过28用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:41万
展开全部
大概写一下
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触发器。
金刚钻Johnny
2015-07-07 · TA获得超过356个赞
知道小有建树答主
回答量:314
采纳率:100%
帮助的人:57.6万
展开全部
查 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
...
追问
看不太明白啊 大神。。。。
追答
按查询结果做个试验就行了
http://www.jb51.net/article/29273.htm
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式