刚开始学ORACLE请大家帮帮忙!昨天查资料查了一天!
我要写一个简单的触发器,功能是当表peo中插入一条信息后触发:表people也动态的插入peo插入的数据!
(peo,people两个表的结构是一样的,属性字段有 ID,UNAME,ADDRESS 三个字段)。
触发器如下:
一、
create trigger zhuanhuan
after insert
on peo
declare
i peo.id%type;
nm peo.uname%type;
addr peo.address%type;
begin
insert into people values(i,nm,addr);
end为什么insert into people values(i,nm,addr)报错!二、
create trigger zhuanhuan
after insert
on peo
declare
hhh varchar(200);
i peo.id%type;
nm peo.uname%type;
addr peo.address%type;
begin
hhh:='insert into people values(:i,:nm,:addr)';
end对是对了,但是不能触发!
insert into peo tt values('003','丫丫','北京市南城区')
我要写一个简单的触发器,功能是当表peo中插入一条信息后触发:表people也动态的插入peo插入的数据!
(peo,people两个表的结构是一样的,属性字段有 ID,UNAME,ADDRESS 三个字段)。
触发器如下:
一、
create trigger zhuanhuan
after insert
on peo
declare
i peo.id%type;
nm peo.uname%type;
addr peo.address%type;
begin
insert into people values(i,nm,addr);
end为什么insert into people values(i,nm,addr)报错!二、
create trigger zhuanhuan
after insert
on peo
declare
hhh varchar(200);
i peo.id%type;
nm peo.uname%type;
addr peo.address%type;
begin
hhh:='insert into people values(:i,:nm,:addr)';
end对是对了,但是不能触发!
insert into peo tt values('003','丫丫','北京市南城区')
insert into people values(:new.id,:new.uname,:new.address);
end
09:50:03 tina@PRACTICE> create table peo(id int,uname varchar2(10),address varchar2(20));表已创建。已用时间: 00: 00: 00.00
09:50:09 tina@PRACTICE> select * from peo;未选定行已用时间: 00: 00: 00.00
09:50:15 tina@PRACTICE> select * from people;未选定行已用时间: 00: 00: 00.00
09:50:18 tina@PRACTICE> create or replace trigger zhuanhuan
09:50:25 2 after insert
09:50:25 3 on peo
09:50:25 4 for each row
09:50:25 5 begin
09:50:25 6 insert into people values(:new.id,:new.uname,:new.address);
09:50:25 7 end;
09:50:25 8 /触发器已创建已用时间: 00: 00: 00.04
09:50:27 tina@PRACTICE> insert into peo tt values('003','丫丫','北京市南城区');已创建 1 行。已用时间: 00: 00: 00.00
09:50:39 tina@PRACTICE> select * from peo; ID UNAME ADDRESS
---------- ---------- --------------------
3 丫丫 北京市南城区已用时间: 00: 00: 00.01
09:50:44 tina@PRACTICE> select * from people; ID UNAME ADDRESS
---------- ---------- --------------------
3 丫丫 北京市南城区已用时间: 00: 00: 00.00
i peo.id%type;
nm peo.uname%type;
addr peo.address%type;
用一下就行
insert into people values(:new.id,:new.uname,:new.address);
after insert
on peo for each rowbegin
insert into people values(:old.i,:old.nm,:old.addr);
end
insert into people values(:new.id,:new.uname,:new.address);
end ;
end后面要有分号结束
after insert
on peo
for each row
begin
insert into people values(:new.id,:new.uname,:new.address);
end;
第二个触发后只是给该临时字符型变量赋值,没有任何意义可以改成行级触发器,用:new来处理
也可以保持为表级改成
create trigger zhuanhuan
after insert
on peo
begin
insert into people
select id,uname,address from peo t
where not exists(select 1 from people where id=t.id);
end;