刚开始学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','丫丫','北京市南城区')

解决方案 »

  1.   

    begin 
    insert into people values(:new.id,:new.uname,:new.address); 
    end
      

  2.   

    09:49:52 tina@PRACTICE> create table people(id int,uname varchar2(10),address varchar2(20));表已创建。已用时间:  00: 00: 00.00
    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
      

  3.   

    不用
    i peo.id%type; 
    nm peo.uname%type; 
    addr peo.address%type;
    用一下就行
    insert into people values(:new.id,:new.uname,:new.address); 
      

  4.   

    create trigger zhuanhuan 
    after  insert 
       on peo   for each rowbegin 
    insert into people values(:old.i,:old.nm,:old.addr); 
    end 
      

  5.   

    begin
    insert into people values(:new.id,:new.uname,:new.address);
    end ;
    end后面要有分号结束
      

  6.   

    create or replace trigger zhuanhuan
    after insert
    on peo
    for each row
    begin
    insert into people values(:new.id,:new.uname,:new.address);
    end;
      

  7.   

    第一个只声明了几个变量却没有赋值,这样的话会插入一条空记录,id是主键不允许为空吧,所以报错
    第二个触发后只是给该临时字符型变量赋值,没有任何意义可以改成行级触发器,用: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;