急!!请教各位一个和触发器有关的问题
我现在想实现这样的一个触发事件:有一张表为基本情况表,一张为修改情况对照表。
表的具体形式为:
/*学生基本情况表*/
create table aaaa
(id char(10) primary key,
no char(6));
/*建立student操作的登记表*/
create table aaaa_action
(in_action number(5),
de_action number(5),
up_action number(5));
/*建立操作登记表的触发器*/
create or replace trigger t0
after insert or delete or update on aaaa
for each row
begin
if inserting then
update aaaa_action set in_action=in_action+1;
end if;
if deleting then
update aaaa_action set de_action=de_action+1;
end if;
if updating then
update aaaa_action set up_action=up_action+1;
end if;
end;
触发器建立也是没有问题的,但就是在对表aaaa进行插入记录时,查看表aaaa_action时说表为空。
请问这是在什么地方出了问题?
谢谢了!!!!
触发器中所有操作都是UPDATE,如果aaaa_action表中本身没有纪录,那当然不会添加任何纪录.
在该表中加入一条纪录:
INSERT INTO aaaa_action VALUES (0,0,0);
再执行对表aaaa的操作,就能看到触发器的作用了
to qiuyang_wang:你好!
我说的那个触发器只是用来给出一个消息框的。
qiuyang_wang,能问你个问题吗?
我是以pb做前台,以oracle做后台的。
就是我在建了上面的触发器之后,想在pb中针对对aaaa表的各种操作弹出相应的消息框,但好象是有些问题。
我的代码如下:
先定义三个全局变量:
dec last_in_count
dec last_de_count
dec last_up_count
然后在窗口的打开事件中写:
select in_action,de_action,up_action
into :last_in_count,:last_de_count,:last_up_count
from zsh.aaaa.action;
timer(10)
在触发事件中的代码:
dec now_in_count
dec now_de_count
dec now_up_count
select in_action,de_action,up_action
into :now_in_count,:now_de_count,:now_up_count
from zsh.aaaa.action;
if now_in_count <> last_in_count then
messagebox("提示","数据库中的表增加了新的记录")
last_in_count=now_in_count
end if
if now_de_count <> last_de_count then
messagebox("提示","数据库中的表有记录被删除")
last_de_count=now_de_count
end if
if now_up_count <> last_up_count then
messagebox("提示","数据库中的表的记录被修改")
last_up_count=now_up_count
end if
但不知道为什么在我进行操作时,消息框就是弹不出来。
请问这是在什么地方出了问题呢?
to mashansi:你好!
我是想在同一个10秒针对aaaa表的各种操作弹出相应的消息框。
我可以问你个问题吗?就是我在oracle中用munber定义的aaaa_action中的字段,在pb下面对应的字段是dec integer还是long?我试了上面的三中,得到的不知道为什么总是0?
那你说把aaaaaction中的三个字段改为序列,请问改怎么改呢?
谢谢了!!!