问个trigger的问题。。。。。。

rogerfhl 2007-09-29 10:43:15
当test_currval 表中有数据插入进来的时候,需要在另一个表key_tmp中插入相应的数据,trigger如下,但好像一直不起作用,
但手工插入test_currval 没有问题,非手工的时候,key_tmp表中总是没有数据,请教高手怎么回事??谢谢!!

create or replace trigger test
AFTER INSERT ON test_currval
for each row
declare
/*

*/
begin
IF INSERTING THEN
if :NEW.a_id = 'fixed_number'
then

insert into key_tmp
values
(:new.row_id,
:new.a_id,
:new.b_id,
1,
:new.begintime);

end if;
END IF;
end test;
...全文
78 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
47522341 2007-09-29
  • 打赏
  • 举报
回复
你可以在触发器里设置断点看看。
47522341 2007-09-29
  • 打赏
  • 举报
回复
手工和非手工怎么区别
WangZWang 2007-09-29
  • 打赏
  • 举报
回复
错了,不能在trigger用commit,
看一下是不是其他约束的问题?
kafeiwudi 2007-09-29
  • 打赏
  • 举报
回复
楼上的 ora触发器里面能用 "Commit; -- 马上提交"???
自己没有用过吧??
WangZWang 2007-09-29
  • 打赏
  • 举报
回复
create or replace trigger test
AFTER INSERT ON test_currval
for each row
declare
/*

*/
begin
IF INSERTING THEN
if :NEW.a_id = 'fixed_number' --先保证通过此条件
then

insert into key_tmp
values
(:new.row_id,
:new.a_id,
:new.b_id,
1,
:new.begintime);
Commit; -- 马上提交
end if;
END IF;
end test;
rogerfhl 2007-09-29
  • 打赏
  • 举报
回复
谢谢楼上,但不是这个地方的问题

test_currval 表的数据比较大,但符合:NEW.a_id = 'fixed_number' 这个条件的不算很多
WangZWang 2007-09-29
  • 打赏
  • 举报
回复
if :NEW.a_id = 'fixed_number' then
-----这个条件是否符合??
改为 if Lower(:NEW.a_id) = 'fixed_number' then 试试
suotiancheng 2007-09-29
  • 打赏
  • 举报
回复
在触发器中设置断点?
什么概念?
rogerfhl 2007-09-29
  • 打赏
  • 举报
回复
手工的话,我写一个sql:insert into test_currval ......


非手工是因为,test_currval 表是一个业务当前表,几乎每分钟都有数据过来,当下一次新的数据过来后,原来的数据会插入到一个历史表中,
现在就是想每次有符合的数据过来一次,就在key_tmp 表中插入特定值

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧