create table A
(
NAME VARCHAR2(30),
NO VARCHAR2(30),
DATETIME VARCHAR2(30)
)create table B
(
NAME VARCHAR2(30),
DATETIME VARCHAR2(30)
)create or replace trigger a_trigger
after insert on a
for each row
declare
result number;
name varchar2(30);
datetime varchar2(30);
begin
name := :new.name;
datetime := :new.datetime;
select count(*) into result from b where name = name and datetime = datetime;
if
result = 0
then
begin
insert into b values(name,datetime);
end;
end if;if
result = 1
then
begin
update b set name = 'zz' where name = name and datetime = datetime;
end;
end if;
end a_trigger;刚学触发器 如上所示 现在有a表和b表 我想在a表插入数据的时候到b表去做相应的检查 如果b表里面有和a表相符的数据则更新b表里面向对应的数据 如果没有则向b表里面插入一条新的数据
现在的问题是这样的 当我第一次向a表插入数据以后是可以实现向b表插入数据的 再一次插入相同数据也可以对b表进行更新操作
但是如果我向a表插入一条新的数据 即name 和datetime 和之前两条数据不一样的时候 b表里面没有出现新的数据
这点表示不理解 请高手帮下
(
NAME VARCHAR2(30),
NO VARCHAR2(30),
DATETIME VARCHAR2(30)
)create table B
(
NAME VARCHAR2(30),
DATETIME VARCHAR2(30)
)create or replace trigger a_trigger
after insert on a
for each row
declare
result number;
name varchar2(30);
datetime varchar2(30);
begin
name := :new.name;
datetime := :new.datetime;
select count(*) into result from b where name = name and datetime = datetime;
if
result = 0
then
begin
insert into b values(name,datetime);
end;
end if;if
result = 1
then
begin
update b set name = 'zz' where name = name and datetime = datetime;
end;
end if;
end a_trigger;刚学触发器 如上所示 现在有a表和b表 我想在a表插入数据的时候到b表去做相应的检查 如果b表里面有和a表相符的数据则更新b表里面向对应的数据 如果没有则向b表里面插入一条新的数据
现在的问题是这样的 当我第一次向a表插入数据以后是可以实现向b表插入数据的 再一次插入相同数据也可以对b表进行更新操作
但是如果我向a表插入一条新的数据 即name 和datetime 和之前两条数据不一样的时候 b表里面没有出现新的数据
这点表示不理解 请高手帮下
解决方案 »
- win8系统安装ORACLE数据库
- 哪位大侠有mysql到oracle的数据库的转换软件?给个mysql to oracle
- 求大家解决一个问题!!oracle数据库
- 求树形结构数据自定义的递归查询?
- 求助!多表间建立视图,求急!
- 一个优化SQL语句的请教
- 请问,如何通过internet同步两个oracle数据库
- oracle如何实现让一条数据的每个列的值和每个列的名字变成一行行的输出!!!详细请看内容
- 求教:ORACLE的SESSION无法正常关闭(急)
- goldengate oracle
- oracle 存储过程 各位朋友帮忙 初学者
- 请问ORACLE数据库如何设置函数的默认值和自增值的?????
after insert on a
for each row
declare
result number;
wrk_name varchar2(30);
wrk_datetime varchar2(30);begin
wrk_name := :new.name;
wrk_datetime := :new.datetime;
PUT(wrk_name);
PUT(wrk_datetime);
select count(*) into result from b where name = wrk_name and datetime = wrk_datetime;
PUT('RESLUT:'||result);
if
result = 0
then
begin
insert into b values(wrk_name,wrk_datetime);
end;
end if;if
result = 1
then
begin
update b set name = 'zz' where name = wrk_name and datetime = wrk_datetime;
end;
end if;
end a_trigger;
感谢!