免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1950 | 回复: 7
打印 上一主题 下一主题

请教高手 trigger 问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-04 13:07 |只看该作者 |倒序浏览
我想给某个表建立 trigger ,跟踪是哪个用户、什么时间、执行了什么sql 语句。

例如:

create trigger trg1 update  on test
after
        (
insert into audit (user_name,table_name,actions,act_time)
values (USER,' ', ,' ',' ' ));


但我只知道用户的变量是 USER, 其他的变量都不知道:例如日期变量、表名字变量、时间变量、代表触发了 trigger 的语句的变量

用兄弟知道吗,指点指点!

论坛徽章:
0
2 [报告]
发表于 2005-08-04 15:12 |只看该作者

请教高手 trigger 问题

trigger是建立在某表上的,
因此表不可能是变量,触发的sql语句也是固定(就是update了).


日期时间可以用:today,current.

论坛徽章:
0
3 [报告]
发表于 2005-08-04 15:17 |只看该作者

请教高手 trigger 问题

日期,时间内容可以从select current from t_test获得

表名应该是“想给某个表建立 trigge”的那张表。

“代表触发了 trigger 的语句的变量 ”???  不可以吧。

论坛徽章:
0
4 [报告]
发表于 2005-08-08 17:59 |只看该作者

请教高手 trigger 问题

还有什么方法获取更详细的 update 语句吗?

我有一个方法,但是把所有的该用户的 sql 语句都查处来了,能否使用唯一的session id 号来精确到该条 update 语句呀?  我觉得是否能够取到该语句
执行时的  session id 号,就可以检索出来了!

我写的如下:

create procedure prd1()

      define sqlstr char;

      select  sqs_statement into sqlstr
      from sysmaster:syssqlstat a,sysmaster:syssessions b
      where a.sqs_sessionid = b.sid and username = user ;


      insert into audit values(user,sqlstr,current);

end procedure;



create trigger trg1 update on test
after
(
execute procedure prd1;
);

上面是我根据 user 用户查出所有 user 用户的 sql 语句,能否根据唯一的
session id 号来检索出详细的update 语句呀,或者使用别的什么可行方法

期盼中!!!!

论坛徽章:
0
5 [报告]
发表于 2005-08-08 18:19 |只看该作者

请教高手 trigger 问题

还有一个问题,过程中能够使用 unload 语句吗?

例如:

   create  procedure prd1()
              
              unload to test.txt
              select * from test;

    end procedure;


报语法错!

还有,过程里怎么调用系统的命令呀?  

请兄弟指教!!!!!!!!

论坛徽章:
0
6 [报告]
发表于 2005-08-09 10:01 |只看该作者

请教高手 trigger 问题

procedure 不支持unload,load.

论坛徽章:
0
7 [报告]
发表于 2005-08-13 12:38 |只看该作者

请教高手 trigger 问题

如果session中不断有SQL在跑,用楼主的方法有问题吧。

真的想要监控SQL,要么使用Informix的审计功能,要么在应用中实现吧。
如果用户都是用Informix用户,或者一个统计的用户来访问数据库,并且客户端就在固定的几台机器上,还是在应用中实现监控吧。当然首先要做好权限控制。

论坛徽章:
0
8 [报告]
发表于 2005-08-15 10:56 |只看该作者

请教高手 trigger 问题

1. informix 自带的 audit 功能好像很有限。

例如 tom 用户执行了一个sql语句:
update cust_info set balance=1000 where name="jacky" ;

审计功能仅仅能够记住 update 关键字,并没有把整个语句给几下来


2. 数据库是一帮人在使用,大多用 dbaccess 来访问,在应用方面来监控
不大可能!

兄弟们呀,还有没有好方法呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP