1. 你贴上来的触发器代码中都没有for each row,但你说是行级触发器,就算是笔误吧 *__*2. 建议为TEMP_AUDIT表建一个语句级的after insert 触发器,在此触发器中向服务器Socket发送某个消息,服务器Socket接收到该消息后,再去读取审计表。保留行级触发器,服务器Socket接收到行级触发器的消息后,缓存接收到的ID,在收到语句级触发器发送的消息后再利用这些ID读取content.
解决方案 »
- 请教一条sql语句
- win7在安装oracle 10g和oracle 11g时都会出现如下错误,请教高手们指导
- 插入数据的问题
- 建立索引:性能会有问题吗?
- 可以捕获oracle数据更新时的消息和该更新的数据吗?
- 触发器能否在COMMIT之后再触发?
- 用VC访问Oracle,把Oracle编译器编译生成的.cpp文件加入工程有问题!
- Oracle在P4的机器上安装,出现问题?
- 怎么编程查询oracle某个用户所拥有的所有的schema对象?(如表,触发器等)
- 请问下该函数如何加到left outer join中
- 各位老道:菜鸟请教一个问题,如何在ORACLE中操作LONG型的字段????急急急急急急
- 关于分组的一个问题
我的行级触发器是漏了for each row,谢谢!!
我之所有为审计表建立行级触发器是因为可以得到:NEW.MID的值,而语句级触发器是不能使用:NEW.MID的啊?
另外,请教,如果一个SQL语句更新5条记录,审计表的行级触发器是触发5次以后才执行语句触发器,还是两种触发器各执行5次??谢谢!!
还是改为temp表的after update语句级触发器吧。
我知道你需要知道MID,所以"保留行级触发器,服务器Socket接收到行级触发器的消息后,缓存接收到的MID",需要你的服务器端采用缓存策略。
或者你再写一个temp表的before update语句级触发器(好像触发器多了点 :)),在本次更新前,先产生一个随机数(保留在包中)或选取某个序列的nextval来唯一标识本次update操作,然后在temp表的行级触发器中将此随机数或某个序列的currval也插入到审计表中,在after update语句级触发器中将该值通知服务器端,这样就不会丢失MID了。
我测试的情况是,当连续5次Update时,Socket收到5次消息,用数据库连接读取内容时,只有最后一次的ID对应的CONTENT有值。前面的4次都没有取到值。这是怎么回事情?
触发器里能够判断Insert操作已经完成后再发送消息吗???