首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

关于数据库的触发器有关问题

2013-06-19 
关于数据库的触发器问题create or replace trigger diner_clist_abefore insert on clist for each rowBEG

关于数据库的触发器问题
create or replace trigger diner_clist_a
before insert on clist for each row
BEGIN
  select Mname,Mprice,Mcost into :new.Mname,:new.Mprice,:new.Mcost
  from Mlist
  where Mid=:new.Mid;
END
这个是我的触发器代码,
插入语句是:
insert into CLIST(Cid,Sid,Mid,Cqty) values('C_01','S_01','M_01',5);
报的错误是:
ORA-04098:触发器‘DINER.DINER_CLIST_A’无效且未通过重新认证。 数据库 触发器
[解决办法]
触发器编译未通过,所以提示无效。。。
[解决办法]
create or replace trigger diner_clist_a
before insert on clist for each row
declare
  mname varchar2(50);
  Mprice varchar2(50);
  Mcost varchar2(50);
BEGIN
  select Mname,Mprice,Mcost into mname ,Mprice,Mcost
  from Mlist
  where Mid=:new.Mid;
  
  insert into 目标表 values(mname ,Mprice,Mcost);
END
[解决办法]
 :new.Mname,:new.Mprice,:new.Mcost
 NEW相当于你插入行的记录类型,直接可以获取对应的值,不需要在赋值
[解决办法]
begin上面少个declare

热点排行